在对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}`);
预期的行为是在变量中包含一些内容。请帮我完成这个任务
答案 0 :(得分:1)
猫鼬操作为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()