1

私はParse.comJavascriptAPIBackbone)を使用しています。

結果(モデルの配列)をにaddしようとしていますが、次のエラーが発生します:QuerycollectionDuplicate 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メソッドを呼び出すことは可能ですか?

4

2 に答える 2

1

これは、Parse.comJavascriptAPIが古いバージョンのバックボーンに基づいているためです。新しいバックボーンバージョンは、コレクションに追加されている重複モデルをサイレントにスキップします。

Parse collection.add()メソッドを新しいバックボーンバージョンに置き換える/拡張するだけです。

アンダースコアを使用して、必要な新しいメソッドで解析コレクションを拡張しました。

たとえば、重複するモデルをコレクションに追加するときの問題を修正するために、新しいバージョンの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プロパティを削除する必要があります。複製されたモデルをフェッチされたモデルに置き換える場合は、http://backbonejs.org/#Collection-updateを使用する必要があります。または、古いデータをすべて置き換える場合は、http://backbonejs.org/#Collection-resetを使用する必要があります

于 2012-12-20T18:58:44.903 に答える