我对Moongose和NodeJS执行查询时遇到问题

我正在尝试使用moongose进行搜索,并根据结果将其分配给变量,但是当我打印该变量时,它显示为空

  let queryDict;

  query.exec(function (err, item) {
    if (err) return handleError(err);
    if (item === null || item.length === 0) {
        queryDict = {
            status: 'empty',
            comment: 'some comment'
        };
    }
    else { queryDict = item }
});

console.log(`queryDict: ${queryDict}`);


预期的行为是在变量中包含一些内容。请帮我完成这个

最佳答案

猫鼬操作是asynchronous,因此当您执行queryDict语句时,undefined将是console.log

您将需要将console.log移至所提供的回调的主体中,以便能够从查询中访问该值。

如果这看起来有点令人困惑,请不要担心,如果您不熟悉该范例,那么JavaScript的异步特性很容易实现。我建议阅读上面链接的文章,并尝试使用猫鼬文档中的示例。

或者,您可以使用async/await重写此代码,如下所示:

async function executeQuery () {
    try {
    const item = await query.exec()

    if (item === null || item.length === 0) {
        queryDict = {
            status: 'empty',
            comment: 'some comment'
        };

        console.log(`queryDict: ${queryDict}`);
        }
    }
    catch (err) {
        handleError(err);
    }
}


executeQuery()

09-30 22:48