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> 没有“保存”方法;

我对为什么会发生这种情况感到有些困惑,并且我进行了很多研究,但似乎无法找到直接的答案。

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' });

如果data[0]当前有一个常规的 JSON 对象,我们需要这样的一行来转换为 BSON 模型对象。

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