我对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()