我试图通过在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'的初始值
由于异步/等待,可能会出现问题,但不确定。我该如何解决?
答案 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();
}
}
尝试此代码,让我知道。