node.js - mongoose Model.save() 在 NodeJS 中返回空数据
问题描述
我正在尝试通过在 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 在参数方面不同但相同。Product 是一个接口,ProductModel 是一个猫鼬模型。
当这个函数被调用时,它返回'result'的初始值
由于异步/等待可能会出现问题,但我不确定。我怎样才能解决这个问题?
解决方案
由于 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();
}
}
试试这个代码,让我知道。
推荐阅读
- machine-learning - 可视化聚类结果
- java - 获取另一个对象的对象
- websocket - Vert.x SockJSHandler 类
- javascript - 检索多个值本地存储并在 div 元素中显示
- database - 如何加入编辑发布 DynamoDB(性能)
- c# - When should I use navigation properties to query the database?
- r - R:ggsurvplot 如何在 start.time(2 年)之前删除平线
- java - 为什么发送和接收 POST 请求之间的字符编码不匹配?
- react-native - 使用“npm start”命令启动 Expo DevTools 后出现错误
- c# - 如何在没有实体框架的情况下连接到 ASP.NET Core 中的数据库?