保存或更新Mongoose

Oll*_*lie 7 javascript mongoose mongodb node.js

有没有一种很好的方法可以保存或更新mongoose中的文档?像我在下面的东西

 let campaign = new Campaign({
        title: req.body.title,
        market: req.body.market,
        logo: req.body.logo,
        additional_question_information: question,
        status: status
    });

 campaign.saveOrUpdate().then(function() { ... }
Run Code Online (Sandbox Code Playgroud)

谢谢大家的帮助

CD-*_*-jS 14

我认为你所寻找的东西被称为'upsert'.

您可以使用findOneAndUpdate并传递{upsert:true}选项来执行此操作,如下例所示:

let campaign = new Campaign({
        title: req.body.title,
        market: req.body.market,
        logo: req.body.logo,
        additional_question_information: question,
        status: status
    });

Campaign.findOneAndUpdate({
    _id: mongoose.Types.ObjectId('CAMPAIGN ID TO SEARCH FOR')
}, campaign, { upsert: true }, function(err, res) {
    // Deal with the response data/error
});
Run Code Online (Sandbox Code Playgroud)

findOneAndUpdate的第一个参数是用于查看是保存新文档还是更新现有文档的查询.如果要在响应数据中返回已修改的文档,则还可以添加该{ new: true }选项.

findOneAndUpdate的文档:http://mongoosejs.com/docs/api.html#model_Model.findOneAndUpdate

  • 仅供参考,执行 `findOneAndUpdate` 不会引发任何围绕 `save` 的中间件。参考:http://mongoosejs.com/docs/middleware.html#notes (2认同)