我正在制作一个非常简单的应用程序来练习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 });