admin管理员组

文章数量:1332872

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");
        });
});

本文标签: javascriptMongoosesave document ObjectassignStack Overflow