Backbone(Parse.com)集合添加忽略重复项

时间:2012-12-20 18:51:50

标签: javascript backbone.js parse-platform

我正在使用 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方法忽略重复模型吗?

2 个答案:

答案 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