【发布时间】:2020-08-21 20:10:47
【问题描述】:
我正在制作一个非常简单的应用程序来练习使用 Node、MongoDb 和 Mongoose 来处理我的数据库的 CRUD 操作,但我在它的更新部分遇到了问题。
这是我的代码:
// 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 将更改保存到数据库?
【问题讨论】:
-
你能做到
Product.findOne({ product: product })吗?那么它的行为会有所不同吗? -
我问这个是因为在纯 mongodb 中,
find()将返回一个游标以遍历找到的所有元素,而findOne()将只返回一个匹配元素。 -
有一个你想做的API;尝试
findOneAndUpdate为await Product.findOneAndUpdate({ product }, { price })
标签: javascript node.js mongodb express mongoose