MongoError code 66在nodeJS中的不可变字段



我试图做一个更新操作。现在我得到一个不可变错误,我知道原因是更新键。我想知道,因为我没有从API传递_id,我仍然可以看到_id,如果我控制台。我想从我的对象中删除_id以修复此错误。下列代码

router.put('/:id', (req, res) => {
//var findid= req.params.id;
if (!ObjectId.isValid(req.params.id))
return res.status(400).send(`No record with given id : ${req.params.id}`);
var alum = new Alumni({
fname: req.body.fname,
lname: req.body.lname,
contact: req.body.contact,
gender: req.body.gender,
dob: req.body.dob,
message: req.body.message,
city: req.body.city,
pincode: req.body.pincode,
state: req.body.state,
district: req.body.district,
password: req.body.password,
email: req.body.email

});
//delete alum['_id'];
Alumni.findByIdAndUpdate(req.params.id, { $set: alum }, { new: true }, (err, doc) => {
if (!err) { res.send(doc); }
else { 
console.log(alum);
console.log('Error in Alumni Update :' + JSON.stringify(err, undefined, 2)); }
});
});

如何解决这个错误?

每当使用猫鼬模型(如new Alumni())分配JSON对象时,默认情况下它会分配_id字段,这是不可变的,因此您不需要使用model with update object。只需按如下所示赋值

var alum = {
fname: req.body.fname,
lname: req.body.lname,
contact: req.body.contact,
gender: req.body.gender,
dob: req.body.dob,
message: req.body.message,
city: req.body.city,
pincode: req.body.pincode,
state: req.body.state,
district: req.body.district,
password: req.body.password,
email: req.body.email
};

最新更新