web-dev-qa-db-ja.com

Backbone.js-id vs idAttribute vs cid

私は数週間Backbone.jsを研究してきましたが、モデル、ルーター、コレクションでビューを使用することに抵抗はありません。

私はまだいくつかの大きなギャップがあります:

  1. idcid、およびidAttribute間の接続は何ですか?それらは互いにどのように影響しますか?

  2. 新しいモデルがIDを取得するのはいつですか?サーバーはそれを割り当てる責任がありますか?モデルのdefaultsに追加する必要がありますか(関数として)。おそらくaddNewModel関数がそれを行うべきでしょうか?

47
Daniel

idcid、およびidAttribute間の接続は何ですか?それらは互いにどのように影響しますか?

cidid は両方ともモデルの一意のIDである必要があり、 retrieve モデルに使用できます from コレクション。

この2つの違いは、cidが、backbone.jsクライアント側によって割り当てられ、モデルがまだサーバーに保存されていないか、おそらく実際のIDを持っていない場合に役立つことです。データベースに保存することすらしていません(おそらく localStorage を使用しています)。 id属性は、サーバーから取得したモデルのIDである必要があります(つまり、idはdbにあります)。 idAttributeは、id属性の更新に使用するサーバーからの「フィールド」をバックボーンに指示します。デフォルトでは、これは「id」に設定されますが、 ドキュメント サーバーが他のものを使用している場合は、それを設定できます(例は「_id」に設定しています)。

新しいモデルがIDを取得するのはいつですか?サーバーはそれを割り当てる責任がありますか?モデルのdefaultsに追加する必要がありますか(関数として)。おそらくaddNewModel関数がそれを行うべきでしょうか?

server に保存すると、新しいIDを取得する必要があり、プロセスをさらに制御する必要がない限り、手動で(idattributeに基づいて)設定する必要はありません。

58
Jack

id-モデルの作成時に手動で設定されるか、モデルがサーバーに保存されたときに入力されるID(接続を確認するには、下部の「idAttribute」を参照)。これは、モデルがサーバーからロードまたは更新されるときにサーバーに送信されるIDです。たとえば、モデルPersonの場合、idが123の場合、この呼び出しが行われます。「/ person/123」

cid-固有のIDは、内部使用のためにバックボーンモデルを設定します

idAttribute-モデルがサーバーに保存されたときに一意のID(デフォルトは "id")として機能するプロパティを決定します。たとえば、サーバー上のモデルの一意のキーは "personId"で定義されるため、fetchが呼び出されますモデルは、サーバー応答を「personId」からバックボーンモデルのidにマップします。

7
3coins

idはサーバーモデルID、cidはクライアントIDです。

  • サーバーモデル:Rails Modelなど
  • クライアントモデル:バックボーンモデル
1
Ryan Lv

モデルのidプロパティは、モデルの属性ハッシュに設定されたidに基づいて自動的に割り当てられます理想的には、これは、クエリしているリソースの残りのAPIから受け取るIDです。一方、cidは各モデルに一時的に割り当てられるIDであり、オブジェクトの実際のIDが決定されるまで役立ちます。たとえば、まだ保存されていないコレクションにプッシュされたモデルは、データベースに保存され、実際のIDが生成されるまで、cidを使用してアドレス指定できます。

0
Dhaval Rajpara