是否可以为Backbone集合中的新模型生成唯一ID?

时间:2017-01-10 15:35:36

标签: javascript backbone.js backbone-collections

我有来自serer的Backbone集合,其属性为idname

我从输入中获得新名称。

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

创建新模型并添加到集合中;

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

新模型没有id属性。我知道所有型号都有id

如何生成唯一ID并将其设置为新模型。

我会在集合中删除一些模型,因此collection.length是个好主意。我会把它发送到服务器。一种解决方案是在插入数据库期间仅发送"name"并在服务器上生成"id"

是否可以从客户端生成此信息?

1 个答案:

答案 0 :(得分:2)

  

一种解决方案是在插入数据库期间仅发送"name"并在服务器上生成"id"

id如果保存在数据库中,则应由数据库处理。绝不尝试增加最后一个ID或将集合长度用作唯一标识符。

临时客户端ID:cid

Backbone为模型和视图提供cid property,这是一个“客户端ID”。它仅对该客户端实例是唯一的,并且在刷新后不会是唯一的。它用于在模型保存之前识别它们并给出它们的最终ID。

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

生成GUID

如果它不是数据库的id,而只是业务逻辑的唯一标识符,则可以生成碰撞机会较低的GUID。

请参阅Create GUID / UUID in JavaScript?