Node Js Mongoose如何发出更新请求



我试图使一个put请求,我想更新我的数据库,但我想保护我的旧数据。例如,我有一个这样的数据库:

{
"_id" : ObjectId("601068a96b6bdc1c40a9b67f"),
"name" : "lamii boudamaa",
"email" : "dborhene6@gmail.com",
"msg" : "11",
"tel" : "2154549",
"__v" : 0
}

我的请求中有一个像这样的参数

{
"entreprise" : "aa",
"poste" : "bb",
}

我想和它聚变得到这样的东西

{
"_id" : ObjectId("601068a96b6bdc1c40a9b67f"),
"name" : "lamii boudamaa",
"email" : "dborhene6@gmail.com",
"msg" : "11",
"tel" : "2154549",
"entreprise" : "aa",
"poste" : "bb",
"__v" : 0
}

我写了这个函数:

router.put('/updateuser',async(req,res)=>{
var aa=(req.body);
console.log(aa);
console.log(req.query);
console.log(req.query.name);
User.findOneAndUpdate({'name': req.query.name }, { $set : {req.body} }).then(doc=>{
console.log('1');
res.json('success');

}).catch(err=>console.log(err))

});

但问题是我总是得到这个

{
"_id" : ObjectId("6017ede4959d6338a0a2e3c4"),
"entreprise" : "",
"poste" : "",
"__v" : 0
}

看起来不像你做错了什么,如果在参数和主体中传递的数据是正确的,你可以尝试在findOneAndUpdate查询中传递{new: true}作为第三个参数。像这样:

User.findOneAndUpdate(
{
'name': req.query.name 
}, 
{ 
$set : {
"entreprise" : req.body.enterprise,
"poste" : req.body.poste     
} 
},
{ new: true}).then(... remaining code

最新更新