更新Mongoose中的项目不起作用---保存不是一个函数



我正在制作一个非常简单的应用程序来练习CRUD操作,使用Node、MongoDb和Mongoose来处理我的数据库,但我被它的更新部分卡住了。

这是我的代码:

// update
app.patch('/api/update', async (req, res) => {
const { product, price } = req.body;
try {
let productToBeUpdated = await Product.find({ product: product });
productToBeUpdated.price = price;
productToBeUpdated.save();
} catch (err) {
res.json({ status: 'failed, no such product' });
console.error(err);
}
res.json({ status: 'successfully updated' });
});

我希望Product.find({ product: product })检索与req.body.product发送的产品相匹配的任何产品。然后我想更新该产品的价格。然后我想将更新后的产品保存到数据库中。然而,我得到了一个错误:productToBeUpdated.save is not a function

如何让mongoose将更改保存到数据库中?

我认为您遇到的问题是,在这种情况下,productToBeUpdated将是一个数组(默认情况下没有save方法(;由Model.find.返回

假设您的逻辑是要更新product:的所有匹配项

我希望Product.fund({Product:Product}(检索与req.body.Product.发送的产品匹配的任何产品

为了实现您的逻辑,我们可以使用Model.updateMany:

const result = await Product.updateMany({ product }, { price });

最新更新