.name在findOne内部工作,但不在外部

时间:2019-05-23 13:20:23

标签: javascript node.js

首先,请原谅我找不到合适的标题。

const product = products.findOne({_id}, (error, productFound) => {
    console.log(productFound.name);
        return {...productFound};
});

console.log(product.name);

log方法内的findOne确实返回了我的真实值,但是在log函数外的findOne返回了undefined

为什么会这样?如何在findOne函数之外获取数据?

2 个答案:

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