最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - Mongoose - save document Object.assign - Stack Overflow

programmeradmin1浏览0评论

I have a mongoose document, and i want to update many fields on it with another object. something like

Model.findById(_id, function (err, doc){
    var updateData = {...data}

    // i do not want to do 
    doc.foo = data.foo;
    doc.bar = data.bar;

    // i need something like
    doc.save(updateData)
    // or
    doc.update(updateData)
    // or
    doc = {...doc, ...updateData}
    doc.save();

});

the updateData is a object with all the data i need to update in the doc.

didn't found any doc related, the closest was a find one and update...

I have a mongoose document, and i want to update many fields on it with another object. something like

Model.findById(_id, function (err, doc){
    var updateData = {...data}

    // i do not want to do 
    doc.foo = data.foo;
    doc.bar = data.bar;

    // i need something like
    doc.save(updateData)
    // or
    doc.update(updateData)
    // or
    doc = {...doc, ...updateData}
    doc.save();

});

the updateData is a object with all the data i need to update in the doc.

didn't found any doc related, the closest was a find one and update...

Share Improve this question edited Sep 22, 2017 at 17:57 CommunityBot 11 silver badge asked May 8, 2017 at 14:48 Maxwell s.cMaxwell s.c 1,66816 silver badges30 bronze badges
Add a ment  | 

2 Answers 2

Reset to default 6

Assuming your data object has all of the keys you want to update on the document, why don't you try using Object.assign as you mention in the title of your question:

Object.assign(doc, data);
doc.save(callback); // save is async

Or you can use Mongo's .findByIAndUpdate() like so:

Model.findByIdAndUpdate(id, { $set: data }, callback)

Either way, you can avoid manually setting each property you want to update.

try this

// update

router.put("/updatestudent/:id", function(req, res) {
    var id = req.params.id;
    var obj = req.body;
    student.findByIdAndUpdate(id, { name: obj.name, emailid: obj.emailid },
        function(err) {
            if (err) {
                return res.send('error updated student');
            }
            res.send("updated");
        });
});
发布评论

评论列表(0)

  1. 暂无评论