我正在使用 Parse.com Javascript API( Backbone )。
我正在尝试add
Query
结果(模型数组)到collection
,但我收到此错误:Duplicate id: can't add the same model to a collection twice.
var GameScore = Parse.Object.extend("GameScore");
// A Collection containing all instances of TestObject.
var TestCollection = Parse.Collection.extend({
model: GameScore
});
var collection = new TestCollection();
var query = new Parse.Query(GameScore);
query.equalTo("playerName", "Dan Stemkoski");
query.find({
success: function(results) {
collection.add(results);
},
error: function(error) {}
});
可以调用add方法忽略重复模型吗?
答案 0 :(得分:1)
这是因为Parse.com Javascript API基于较旧版本的骨干网。较新的骨干版本会默默跳过添加到集合中的重复模型。
您可以使用较新的骨干版本简单地替换/扩充Parse collection.add()方法。
我使用下划线来扩展我的Parse Collection,使用我需要的新方法。
例如,要在将重复模型添加到集合时解决问题,我添加了较新版本的collection.add(),如下所示:
_.extend(selectedUsersCol,newBackboneAddMethod()); 其中newBackboneAddMethod()是新版Backbone / Underscore的add方法的副本。
在parse.com上查看此答案:https://www.parse.com/questions/what-version-of-backbone-is-parse-javascript-api-based-on
答案 1 :(得分:0)
如果要保存两个模型,则应更改(请参阅http://underscorejs.org/#uniqueId)或从提取的模型中删除ID属性。 如果要使用fetched替换重复模型,则应使用http://backbonejs.org/#Collection-update。或者,如果您要替换所有旧数据,则应使用http://backbonejs.org/#Collection-reset