最近我一直在想,
我当前正在为项目使用MongoDB,并且每当连接到数据库时,我都会使用Mongoclient.connect()。 该函数有一个回调,因此我假设它也返回一个Promise。
我现在的问题是,在我的回调中(因此,在连接到数据库之后),我查询了一些数据,我想在函数返回时返回该数据,但是显然这不起作用,因为Node异步工作并且返回的值将是不确定的。
我已经看到一些函数,因为我认为文件系统模块可以调用同步函数,因此实际上您可以等待该函数完成,然后获取返回值。我本人将如何实现这样的目标?还是有一种更简单的方法来返回我的查询?
非常感谢您的任何答复
module.exports.findCategoryKeywords = (categories) => {
/* Connect to database */
MongoClient.connect(uri, (err, client) => {
if (err) {console.log(err)}
else {
// Access swarm
let db = client.db("Swarm");
// Go into the keywords collection
let keywords = db.collection("keywords_by_category");
/* Push all the database requests onto cursors */
let cursors = new Array();
for (let i = 0; i < categories.length; i++) {
cursors.push(keywords.find({"category" : categories[i]}).toArray());
}
return cursors;
}
});
}
游标是我想要返回的。