【发布时间】:2021-08-19 20:34:20
【问题描述】:
我在使用 mongoose findOne 循环时遇到问题。
我有一个 ObjectID 数组,我需要获取文档的另一个值(value 关键字) 这是我目前所拥有的:
let qarray = []
for (var i = 0; i < req.body.keyword.length; i++) {
let pushy = db.collection('keywords').findOne({ "_id": req.body.keyword[i]})
qarray.push(pushy.keyword)
console.log(pushy); // for debugging purpose
console.log(req.body.keyword[i]); // for debugging purpose
}
console.log(qarray);
那个结果:
Promise { <pending> }
60ab81c5be36d74968e23d14
Promise { <pending> }
60a77893b015d85f38a3323f
[ undefined, undefined ]
编辑
我选择了循环解决方案,但我对异步函数不是很熟悉......
async function fetchSomeStuff(expTemp){
let qarray = []
for (var i = 0; i < expTemp.keywordid.length; i++) {
console.log(expTemp.keywordid);
console.log(db.collection('keywords').findOne({ _id: expTemp.keywordid[i]}));
let pushy = await db.collection('keywords').findOne({ _id: expTemp.keywordid[i]})
.catch(error => console.error(error))
.then(qarray.push(pushy.keyword))
}
console.log(qarray);
}
这给了我这些问题消息:
承诺'{待处理}'
ReferenceError: 在初始化之前无法访问 'pushy'
我想我必须等待数据库获取然后放入我的数组中,我肯定错过了一些东西
【问题讨论】:
标签: javascript node.js mongodb loops mongoose