gpt4 book ai didi

node.js - 在集合中添加记录时,findbyIdAndUpdate 不起作用

转载 作者:可可西里 更新时间:2023-11-01 09:21:15 25 4
gpt4 key购买 nike

我写了一个更新查询,它将通过 _id 找到记录并更新。这段代码完全可以正常工作,直到我在该集合中添加一条新记录。如果添加一条记录并进行查询,它将转到成功部分但返回 null 而不是数据。但是当我重新启动代码并尝试相同的操作时,它工作正常。我的方法是PUT。

accept = (req, res) => {
var query = { _id: req.params.uid };
var updatevalue = { $set: { status: 3 } };
var options = { new: true }
this._model.findByIdAndUpdate(query, updatevalue, options, (err, obj) => {
if (err) {
res.send(err);
}
else {
res.send(obj);

}
});

请求

api.abc.com/api/accept/5cfe4dd898fd225ef1cabdsd

最佳答案

通常,我们可以通过多种方式更新单条记录

  1. findOneAndUpdate()方法用于更新集合中的记录。用这个方法就可以了,不用手动找记录然后更新。这种方法确实比手动方法工作得更快。它有一个选项标志 new,如果为真,它将在响应中返回更新的记录。
    User.findOneAndUpdate({_id: id},{$set:{name:user.name}},{new:true}).then((docs)=>{
if(docs) {
resolve({success:true,data:docs});
} else {
reject({success:false,data:"no such user exist"});
}
}).catch((err)=>{
reject(err);
});
  1. findByIdAndUpdate()方法用于根据 Id 更新记录。我们可以将id作为_id的«Object|Number|String»值传递给查询。所以在这里,我们可以直接传递 req.params.id
    User.findByIdAndUpdate(req.params.id,{$set:{name:user.name}},{new:true}).then((docs)=>{
if(docs) {
resolve({success:true,data:docs});
} else {
reject({success:false,data:"no such user exist"});
}
}).catch((err)=>{
reject(err);
})

关于node.js - 在集合中添加记录时,findbyIdAndUpdate 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57176075/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com