Mongoose -使用find by id更新值

kjthegm6  于 2023-01-26  发布在  Go
关注(0)|答案(1)|浏览(210)

我试图从我的前端点击所有帖子,所以req.body.numberOfClick是包含点击次数的值&他的ObjectID:req.body._id

app.post('/allPostClicked', function (req, res){
  console.log("ID : "+req.body._id, ", Number of click : "+req.body.numberOfClick);

});

我成功地取得了一些成果:

...
ID : 63b0996c5fac5d36a035bfe1 , Number of click : 23
ID : 63b0996c5fac5d36a035bfe1 , Number of click : 24
ID : 63a98cefd003d6794bb12858 , Number of click : 1
ID : 63b0996c5fac5d36a035bfe1 , Number of click : 25
ID : 63b0996c5fac5d36a035bfe1 , Number of click : 26

现在,我需要将其存储在Mongo数据库中,因此我希望使用_id查找哪个字段,以便将新值放置在他的getNumberOfClick字段中

app.post('/allPostClicked', function (req, res){
  console.log("ID : "+req.body._id, ", Number of click : "+req.body.numberOfClick);
try{
  const filter = { _id: req.body._id };
  const update = { getNumberOfClick: req.body.numberOfClick };

Post.findOneAndUpdate( filter, update )

}catch{
 res.status(404).send({error: "Post is not find !"})
}

 res.end("yes");
});

不幸的是,我没有任何更新本专栏

14ifxucb

14ifxucb1#

当你查询数据库时,你必须使用async/await来“等待”结果,或者使用回调函数,例如使用async/await:

app.post('/allPostClicked', async function (req, res){
  console.log("ID : "+req.body._id, ", Number of click : "+req.body.numberOfClick);
try{
  const filter = { _id: req.body._id };
  const update = { getNumberOfClick: req.body.numberOfClick };

  const result = await Post.findOneAndUpdate(filter, update)
     if(!result) {
     res.status(404).send({error: "Post is not find !"})
  }
}catch(err){
 res.status(500).send({error: err })
}
 res.end("yes");
});

如果在试图查找之前已经在数据库中存储了一些数据,则可以添加一个插入选项。如果要在找不到文档时插入文档,也可以添加一个插入选项,如下所示

const result = await Post.findOneAndUpdate(filter, update, {upsert: true})

但在这种情况下,你不会得到错误消息document not found,因为它会创建一个文档,所以这取决于你。更多细节,你可以查看他们的文档:https://mongoosejs.com/docs/api.html#model_Model-findOneAndUpdate

相关问题