如何修复document.update()不返回新文档

时间:2019-07-17 10:54:00

标签: javascript mongoose

我有一个产品模型,其属性为:{ _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
    }
}

1 个答案:

答案 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 });
};