【发布时间】:2020-11-12 05:21:35
【问题描述】:
我没有捕获连接函数以在 getAllowedEmails 函数中返回,当我在 allowedEmails 中执行 console.log 时,它会正确返回电子邮件,但是当我分配给变量 emails 时,它返回空。我认为这是一个异步等待问题,但无法弄清楚。
static async getAllowedEmails() {
var MongoClient = require("mongodb").MongoClient;
//db url
let emails = [];
await MongoClient.connect(url, async function (err, client) {
const db = client.db("data-admin");
var myPromise = () => {
return new Promise((resolve, reject) => {
db.collection("users")
.find({})
.toArray(function (err, data) {
err ? reject(err) : resolve(data);
});
});
};
var result = await myPromise();
client.close();
let allowedEmails = [];
result.map((email) => allowedEmails.push(email.email));
console.log(allowedEmails)
emails = allowedEmails;
});
console.log(emails)
return emails;
}
【问题讨论】:
-
它有效,谢谢,我认为我使用回调符号迷失了自己。使用完全异步等待对我来说更好,代码变得清晰易读。
标签: node.js mongodb async-await