我尝试使用MongoDB在Nodejs中创建一个CRUD应用程序,但是当我编写更新部分并使用 Postman 发送时,终端中显示错误:
**MongoServerError: Performing an update on the path '_id' would modify the immutable field '_id'**
下面是我在mongo db中更新bu _id条目的代码
router.put('/api/employee/edit/:id' ,(req,res) =>{
const emp = new Employee({
name:req.body.name,
email:req.body.email,
salary:req.body.salary
});
Employee.findByIdAndUpdate(req.params.id, {$set: emp},(err,data) => {
if(!err){
res.status(200).json({code:200,message:"Employee updated successfully",
updateEmployee:data
})
}
else{
console.log(err);
}
})
})
3条答案
按热度按时间r7knjye21#
我假设把整个对象作为参数给
$set
意味着它会尝试修改它的所有属性,包括不应该修改的_id
,而你还没有在对象上设置它。尝试分别指定要修改的属性:wwtsj6pe2#
您正在创建一个新的
Employee
文档,并希望用该新文档更新当前文档。您不能这样做,因为这样做也会尝试覆盖该文档的_id
。您应该用新数据更新现有文档,而不是创建一个新的Employee
文档:cnwbcb6i3#
我们的想法是永远不要传递值 要更新'_id',您可以从实体中提取ID并发送其他值。例如: