我试图使一个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