2017-01-10 5 views
1

私は、属性がidnameのsererからのバックボーンコレクションを持っています。Backboneコレクションで新しいモデルの一意のIDを生成することは可能ですか?

私は入力から新しい名前を取得します。

var a = $('#newFoodtype').val(); 

新しいモデルを作成してコレクションに追加します。

var b = new app.Foodtype({ "name" :a }); 
this.collection.add(b); 

新しいモデルにはidという属性がありません。私はすべてのモデルがidを持っていることを知っています。

一意のIDを生成し、これを新しいモデルに設定する方法。

コレクションの一部のモデルを削除しますので、collection.lengthは良いアイデアです。これをサーバーに送信します。 1つの解決策は、"name"のみを送信し、DBに挿入するときにサーバー上に"id"を生成することです。

これはクライアント側から生成できますか?

答えて

2

1つの解決策は、"name"のみを送信し、DBに挿入するときにサーバー上に"id"を生成することです。

idは、データベースに保存されている場合はデータベースで処理する必要があります。最後のIDを増やしたり、コレクションの長さを一意の識別子として使用したりしないでください。

一時的なクライアントID:cid

バックボーンは、モデルを与え、 "クライアントID" であるcid propertyを表示します。そのクライアントインスタンスに対してのみ一意であり、更新後に一意ではありません。モデルが保存され、最終的なIDが与えられる前にモデルを識別するのに役立ちます。

var newModel = Backbone.Model({ name: "new model" }); 
console.log(newModel.cid); // e.g.: "c123" 

生成GUID

それはデータベースのIDはありませんが、ビジネスロジックのための唯一のユニークな識別子の場合は、衝突の可能性が低いとGUIDを生成することができます。

Create GUID/UUID in JavaScript?

関連する問題