find方法不具有forEach属性

时间:2018-07-05 04:08:57

标签: node.js mongodb mongoose mongoose-schema

我在带有Typescript的Node.js中使用猫鼬。

我的架构如下:

Member = mongoose.model("Member", MemberSchema);
const MemberSchema = new mongoose.Schema({
  familyName: String,
  otherNames: String
}, { timestamps: true });

我可以将find方法与内联回调一起使用,但是如果尝试以下操作:

Member.find({"_id": req.body.item._id})
  .forEach((result,i) => {
     result.isDeleted = true;
     mongoose.Collection.save(result);
  }

我在forEach遇到错误:

  

类型“ DocumentQuery”上不存在属性“ forEach”。您忘了使用“等待”吗?

猫鼬文档here似乎说有一种forEach方法。

如何使用forEach方法?

1 个答案:

答案 0 :(得分:2)

答案取决于您使用的驱动程序, 以下是一些可以帮助您的示例:

node-mongodb-native

Member.find({"_id": req.body.item._id}).forEach(function(doc) {
  doc.isDeleted = true;
  mongoose.Collection.save(doc)
}, function(err) {
  // done or error
});

猫鼬

Member.find({"_id": req.body.item._id}).stream()
  .on('data', function(doc){
    doc.isDeleted = true;
    mongoose.Collection.save(doc)
  })
  .on('error', function(err){
    // handle error
  })
  .on('end', function(){
    // final callback
  });