【发布时间】:2021-06-14 09:46:52
【问题描述】:
我有一个像 [ { category: 'xxx' }, { author: '12345' } ] 这样的对象数组。我的任务是搜索这个数组并在 mongoDB 中找到返回 _id [ { category: '_id' }, { author: '_id' } ]
我有执行此操作的代码,我创建了一个空数组arrSearch,当它找到_id 时,它将推送到该数组。但是运行之后,数组是空的,没有推送数据。我不确定它有什么问题。
export const getObjIdFromCondition = async (conditionArr) => {
var arrSearch = []
try {
await conditionArr.map(obj => {
for (let key in obj) {
switch (key) {
case 'category':
const foundCategory = Category.findOne({ slug: obj[key] }).orFail()
foundCategory.then(resp => arrSearch.push({category: resp._id})) // push obj to array
break
case 'author':
const foundAuthor = Author.findOne({ author_id: obj[key] }).orFail()
foundAuthor.then(resp => arrSearch.push({ author: resp._id }))
break
default:
break
}
}
})
} catch (error) {
console.log(error);
}
console.log('arrSearch', arrSearch) // -> empty array
}
你能帮帮我吗?提前谢谢你。
【问题讨论】:
-
您的数据库查询也需要同步,否则
map函数将在不等待获取数据的情况下返回,并且您的 arrSearch 将在没有数据的情况下记录
标签: javascript node.js arrays mongodb mongoose