node mongoose这段代码为什么能正确执行?

        Promise.all(items.map(item => {
            return Model.findOneAndUpdate({
                _id: item._id,
            }, {
                $set: item
            }, {
                upsert: true
            })
        }))

根据mongoose文档findOneAndUpdate方法应该返回一个query对象,query对象在执行exec方法之后会返回一个promise对象,为什么上面这段代码没有执行exec也可以正确插入呢?

阅读 2.9k
1 个回答
 let query = TagModel.findOneAndUpdate({
    'names': 'java'
  })
  query.then(function (result) {
    console.log(JSON.stringify(result));
  })

输出

{"_id":"596b5dc012ee1f34cc7495ab","__v":0,"deleteTime":null,"remarks":null,"createTime":"2017-07-16T12:36:16.953Z","operatorId":null,"operator":"1","num":0,"names":"java"}

findOneAndUpdate不传回调函数,返回的是个promise对象,items.map方法,获取到的是一个promise数组.
所以上面代码可以正常执行.
试试就知道了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题