如果满足条件,请更新收集并发送电子邮件|| Mongo Node.js

时间:2019-03-27 19:07:39

标签: javascript node.js mongodb mongoose

我有以下情况-我想遍历db中的每个元素,并且:

  • 如果元素的bumped字段设置为false
  • 并且创建日期不到30天前

然后:

  • bumped设置为true
  • 发送邮件给用户!

我的方法:

User.updateMany(
     {
        bumped: false,
        creationDate: {
           $gte: new Date(Date.now() - 30 * 24 * 60 * 60 * 1000),
        },
     },
     {
        $set: {
           bumped: true,
        },
     },
     (err, res) => {
        // 
        // What is "res" here? <====== question
     },
  );

我的问题-回调函数中的res参数是什么?

Question2 :是否仅对满足条件的这些元素触发回调?

非常感谢您!

1 个答案:

答案 0 :(得分:1)

updateMany函数不会返回更新的文档。它仅返回更新的文档数。

因此,您在这里只能做的事情是先找到所有文档并逐个进行迭代,然后再调用发送邮件功能。

const users = await User.find({
  "bumped": false,
  "creationDate": {
    "$gte": new Date(Date.now() - 30 * 24 * 60 * 60 * 1000),
  }
})

const promises = users.map(async(user) => {
  await User.updateOne({ _id: user._id }, { $set: { bumped: true }})
  // Here you can write your send mail function
})

await Promise.all(promises)
相关问题