我有一个产品模型,其属性为:{ _id, name, code }
我有一个产品文档:
{ "5d2eece48d04bc796b51d07d", "old name", "old code" }
我想用{ "5d2eece48d04bc796b51d07d", "new name", "new code" }
更新产品文档,并在完成后返回新文档。但这不起作用,它返回的是旧文档。
我不想使用Product.findByIdAndUpdate()
,因为它的运行时间比product.update()
长。
你能帮我吗?
const upTest = async (id, updatedProduct) => {
let { name, code} = updatedProduct
try {
let product = await Product.findById(id)
const query = {
...(name && {name}),
...(code && {code}),
}
product.update(query)
return product
} catch (error) {
throw error
}
}
答案 0 :(得分:0)
您不必等待update()
完成并且update()
没有选择返回更新文档的选项。
使用findByIdAndUpdate
如果在返回文档之前不对文档进行任何操作,则不需要将其作为异步函数,只需返回操作并在调用函数时处理错误即可
const upTest = (id, updatedProduct) => {
const { name, code } = updatedProduct;
const query = {
...(name && { name }),
...(code && { code })
};
return Product.findByIdAndUpdate(id, query, { new: true });
};