【发布时间】:2020-08-07 16:36:03
【问题描述】:
我在想办法解决这个问题时遇到了麻烦,我有一个来自 MongoDB(集合)的表用于 cmets,另一个集合用于用户。
当页面加载时,它会查找评论集合并选择相关的cmets,然后搜索用户表以找到发表评论的用户的名称,然后将数据组合起来发送响应。
但是,在从用户表中提取数据并添加数据之前,会发送输出。我该如何解决这个问题,这是我的代码
var output = []
const Comments = require('comments.js')
const Users = require('users.js')
function delay( ) {
return new Promise(resolve => setTimeout(resolve, 300))
}
async function delayedProcess(item) {
await delay()
Users.findById(item.user, async function(err, result) {
Object.assign(item, {name: result.name})
output.push(item)
})
}
async function processArray(array) {
const promises = array.map(delayedProcess)
await Promise.all(promises)
return res.json({data: output})
}
Comments.find({page_id: id}).sort({post_date:-1}).limit(6).then(function(data) {
processArray(data)
})
【问题讨论】:
标签: javascript node.js mongodb express promise