mongodb updateOne方法不适用于mongoose 5.4.10

时间:2019-02-06 12:15:13

标签: node.js mongodb mongoose

我正在尝试使用updateOne方法更新mongodb的记录,但是它不起作用。

async function updateCourse(id) {
   const result = await  Course.updateOne({_id : id }, { name: 'Abc'}, 
         function(err, res) {});
   console.log(result);
}

任何人请提出可能的解决方案来解决此问题。

谢谢

4 个答案:

答案 0 :(得分:1)

尝试此代码

const test = async function updateCourse(id) {
  const result = await Course.updateOne({ _id: id }, { name: "Abc" })
  console.log(result);
};

如果您使用异步等待,请不要再使用回调

我希望这可以为您提供帮助。谢谢

答案 1 :(得分:0)

嗯,你尝试过这个兄弟吗?

const result = await Course.findOneAndUpdate( { _id: id }, {  name: "Abc" }, { new: true } )

答案 2 :(得分:0)

我也无法使它正常工作。对我来说,我必须这样做:

let tempSubDoc = await myDocument.mySubDocument.id(my_id);

tempSubDoc.value1 = val1;
tempSubDoc.value2 = val2;

await myDocument.save();

文档说,当对象被更新和保存时,Mongoose会在内部向MongoDb发送一个UpdateOne命令:https://mongoosejs.com/docs/documents.html

答案 3 :(得分:0)

我以为这会对某人有帮助,

您必须添加必需的字段以在猫鼬模式中进行更新,否则将删除这些字段,这就是为什么更新未完成的原因。

在这种情况下,必须将“名称”字段添加到“课程”模式。另外,您可以使用“等待”,而无需使用回调函数。