【发布时间】:2021-12-19 08:38:00
【问题描述】:
activeUsers - 猫鼬对象数组
activeUsers.campaings - 猫鼬对象数组
LandingsFromBinom - 存储 id [{id: 123, name: name}, {id: 133, name: name2}] 的对象数组
对于每个用户,我都有活动数组(mongoose doc),对于每个活动,我都有 langings 数组(mongoose doc)。
我从 db 中获取所有用户并开始为每个用户进行迭代。 对于每个广告系列,我都会获取“着陆”并开始为每个广告系列进行迭代。
查看 db 并比较我需要更改的 id 并将其值存储在“landingsIds”中
问题:当我控制台日志“数据”返回我空数组,但如果我 console.log 函数返回填充数组。如何解决?
// Fetch users from db
let activeUsers = await User.find().populate({
path: 'campaigns',
match: { active: true },
})
const data = activeUsers.reduce((results, user) => {
// For each campaign get landings
user.campaigns.forEach(async (campaign) => {
const { landings } = await campaign.populate({
path: 'landings',
match: { active: true },
})
// Get only good ID
const landingsIds = landings.reduce((results, landing) => {
landingsFromBinom.forEach((binomLanding) => {
if (
parseInt(binomLanding.id) === landing.id &&
binomLanding.inject >= landing.todayVisitors
) {
results.push(landing.id)
}
})
return results
}, [])
results.push({
landings: landingsIds,
user: user._id
})
// RETURN Filled array
console.log(results)
})
return results
}, [])
// Return empty array
console.log(data)
输出:
[]
[
{
landings: [ 3, 11, 1, 7 ],
user: new ObjectId("617fb23b1e7ea187ae07a6ee")
}
]
【问题讨论】:
标签: node.js arrays asynchronous mongoose