1

我正在使用Parse.com Javascript API(Backbone)。

我正在尝试将add结果Query(模型数组)转换为 a 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) {}
});

问题:

是否可以调用忽略重复模型的添加方法?

4

2 回答 2

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

于 2013-01-10T23:59:35.370 回答
0

如果您想保存这两个模型,您应该更改(请参阅http://underscorejs.org/#uniqueId)或从获取的模型中删除 ID 属性。如果你想用 fetched 替换重复的模型,你应该使用http://backbonejs.org/#Collection-update。或者,如果您想替换所有旧数据,您应该使用http://backbonejs.org/#Collection-reset

于 2012-12-20T18:58:44.903 回答