3

MongooseJSで実行されているmongodbコレクションについて考えてみます。

サンプルコード:

Person.where('uid').equals(19524121).select('name').exec(function(err, data){
     // Here I can get the data correctly in an array.
     console.log(JSON.stringify(data)); 
     data[0].name = "try to save me now"; // Select the first item in the array
     data[0].save(); // Object #<Promise> has no method 'save'.
}

エラー-カントはこれを修正する方法を見つけているようです。

オブジェクト#<Promise>にはメソッド'save'がありません。

私はなぜこれが起こっているのか少し混乱しています、そして私はかなり研究しました、そしてこれに対する直接の答えを見つけることができないようです。

4

1 に答える 1

12

aの結果は、findレコードの配列です。あなたはおそらく次のようにそれらのレコードをループするつもりでした:

Person.find({ uid: /19524121/ }).select('name').exec(function(err, data){
  for(var i = 0; i < data.length; i++) {
     var myData = new Person(data[i]);
     myData.name = "try to save me now";
     myData.save(); // It works now!
  }
}

また、マングースのホームページから、関数のコールバックプロトタイプはfunction(err, data)、上記で修正した逆ではなく、であるように見えます。

ホームページからこれを見てください:

var fluffy = new Kitten({ name: 'fluffy' });

現在通常のJSONオブジェクトがある場合data[0]、BSONモデルオブジェクトに変換するには、このような行が必要です。

var myData = new Person(data[0]);
于 2013-03-13T05:17:05.633 に答える