私はBackboneJSに頭を悩ませていますが、私がまだ苦労している(多くの)問題の1つは、モデルがどのように正確に同期し、サーバー側のDBレコードに関連しているかです。
たとえば、モデル「Dvd」があり、「Dvd」モデルの属性(名前など)を変更してから、save()を呼び出します。サーバー側は、更新するDBレコードをどの程度正確に認識していますか。バックボーンはDB行IDなどを保持していますか?
私はBackboneJSに頭を悩ませていますが、私がまだ苦労している(多くの)問題の1つは、モデルがどのように正確に同期し、サーバー側のDBレコードに関連しているかです。
たとえば、モデル「Dvd」があり、「Dvd」モデルの属性(名前など)を変更してから、save()を呼び出します。サーバー側は、更新するDBレコードをどの程度正確に認識していますか。バックボーンはDB行IDなどを保持していますか?
はい、通常、バックボーン モデルを設定して、操作しているオブジェクトのデータベース行 ID をモデルに設定します。それらの 1 つがクライアント側で真新しく、まだサーバーに保存されていない場合、初期保存トランザクションが成功した場合にサーバーが ID を割り当てるため、ID がデフォルトであるか、ID がありません。 .
モデル アイテムを保存または更新すると、バックボーンは、保存または更新の要求が行われた後に変更された属性を含む JSON でサーバーが応答することを期待します。最初の保存要求への応答で、サーバーはクライアントに新しく保存された項目の行 ID を通知します (同時に、クライアントに渡す必要がある他の情報も一緒に送信できます)。
デフォルトでは、モデル オブジェクトの 'id' 属性は一意の識別子であると見なされますが、主キーに別の識別子を使用している場合、バックボーンではこれを変更できます。それを行うには、モデルにパラメーターを与えるだけidAttribute
です ( のドキュメントを参照Backbone.Model.extend()
)。
一方、urlRoot
パラメータまたはurl
関数のいずれかをモデルに指定して、特定のモデルのサーバーにさまざまな ajax リクエストを送信するために使用する URL を特徴付けることができます。