作者:一腕儿本人 | 来源:互联网 | 2023-09-12 15:25
我在从MongoDB集合中获取数据并将其返回到NodeJS中的代码数组中时遇到问题。
到目前为止,该代码返回了一个承诺,我不完全知道如何处理。
任何帮助将不胜感激。
async function loadData() {
try {
// Connect to the MongoDB cluster
console.log('Attempting to connect to DB')
client.connect(async err => {
const collection = client.db("db").collection("collection");
await collection.find({}).toArray().then((data) => {
//Getting stumped as the data gets returned as a promise and does not get added to an array
}
);
client.close();
console.log('Closed DB connection');
});
} catch (e) {
console.error(e);
}
您使用了错误的承诺以及async
await
。异步/等待的目的是避免使用.then
函数。选择一个,使用或。
使用回调方法:
collection.find({}).toArray().then((data) => {
console.log(data);
},err => {
// this gets called if there is an error only
console.log(err);
});
或使用async / await:
try {
const data = await collection.find({}).toArray();
}
catch(err) {
console.log(err);
}
请注意,如果您选择使用异步/等待,则包含功能必须标记为async
,您已经在这样做了。如果您使用上述回调方法,则不需要这样做。
,
SELECT ... FOR UPDATE
拨打电话获取您的数据
Don't execute the Promise inside the loadData function
function loadData() {
try {
// Connect to the MongoDB cluster
console.log('Attempting to connect to DB')
client.connect(async err => {
const collection = client.db("db").collection("collection");
return collection.find({})
);
client.close();
console.log('Closed DB connection');
});
} catch (e) {
console.error(e);
}
对于MongoDB连接,我认为您做错了,请遵循此gist