猫鼬Model.save()在NodeJS中返回空数据

时间:2019-07-22 10:47:11

标签: node.js asynchronous mongoose

我试图通过在NodeJS中使用mongoose v5.6.3将产品文档添加到MongoDB,但是在回调函数中,它无法将结果分配给返回值。

这是我的职能:

public async addProduct(productInfo: Product) {
        let result = null;

        let newProduct = new ProductModel(productInfo);
        newProduct.uuid = id();

        await newProduct.save(async (err,product) => {
            if(err){
                throw new ProductCreateError();
            }
            result = product;
        });
        return result;
    }

请注意,Product和ProductModel有所不同,但参数相同。产品是接口,产品模型是猫鼬模型。

调用此函数时,它将返回'result'的初始值

由于异步/等待,可能会出现问题,但不确定。我该如何解决?

1 个答案:

答案 0 :(得分:0)

由于save()是异步任务,它将始终返回null。该函数在返回乘积之前将返回null。

将代码修改为

public async addProduct(productInfo: Product) {
let result = null;
  try {
    let newProduct = new ProductModel(productInfo);
    newProduct.uuid = id();
    result = await newProduct.save();
  } catch (e) {
    throw new ProductCreateError();
  }
}

尝试此代码,让我知道。