我有来自serer的Backbone集合,其属性为id
和name
。
我从输入中获得新名称。
var a = $('#newFoodtype').val();
创建新模型并添加到集合中;
var b = new app.Foodtype({ "name" :a });
this.collection.add(b);
新模型没有id
属性。我知道所有型号都有id
。
如何生成唯一ID并将其设置为新模型。
我会在集合中删除一些模型,因此collection.length
是个好主意。我会把它发送到服务器。一种解决方案是在插入数据库期间仅发送"name"
并在服务器上生成"id"
。
是否可以从客户端生成此信息?
答案 0 :(得分:2)
一种解决方案是在插入数据库期间仅发送
"name"
并在服务器上生成"id"
。
id
如果保存在数据库中,则应由数据库处理。绝不尝试增加最后一个ID或将集合长度用作唯一标识符。
cid
Backbone为模型和视图提供cid
property,这是一个“客户端ID”。它仅对该客户端实例是唯一的,并且在刷新后不会是唯一的。它用于在模型保存之前识别它们并给出它们的最终ID。
var newModel = Backbone.Model({ name: "new model" });
console.log(newModel.cid); // e.g.: "c123"
如果它不是数据库的id,而只是业务逻辑的唯一标识符,则可以生成碰撞机会较低的GUID。