首先,请原谅我找不到合适的标题。
const product = products.findOne({_id}, (error, productFound) => {
console.log(productFound.name);
return {...productFound};
});
console.log(product.name);
在log
方法内的findOne
确实返回了我的真实值,但是在log
函数外的findOne
返回了undefined
。
为什么会这样?如何在findOne
函数之外获取数据?
答案 0 :(得分:0)
因为在您的情况下findOne不会将其值返回给赋值。您必须将回调结果分配给外部值。但是在这种情况下,最新的console.log语句已被评估。
您可以在此处使用异步/等待样式来更好地阅读
答案 1 :(得分:0)
在阅读注释并研究了Async / Await之后,这里是我最终得到的最终代码:
function getProduct() {
return new Promise((resolve, reject) => {
resolve(products.findOne({_id}, (error, productFound) => {
return {...productFound};
}))
})
}
const product = await getProduct();
console.log(product.name);