猫鼬:forEach中的多find()-最终的then()在哪里

时间:2019-06-25 08:43:40

标签: node.js mongodb mongoose es6-promise

我使用multi find()来填充“类别”和“ pic”作为“发布”。但我不知道最终将数据全部返回到“ res.send(posts)”的位置。 或使用其他方法“ Promise.all”,请帮助我解决问题

Post.find().then(posts=> {
   async.forEach(posts, function(post, done) {
        Cat.find().where('posts').in([post.id]).then(categories=> {

            post.categories = categories;

            var id=mongoose.Types.ObjectId(post.id);
            File.findOne({'related.ref': id}).then(pic=>{
                post.pic=pic;

            });
        })
    //res.send(posts);????
    });
 });

1 个答案:

答案 0 :(得分:1)

您可以将 async-await 用于路由处理程序:

async (req, res) => {

  const posts = await Post.find()

  for (post of posts) {

    const categories = await Cat.find().where('posts').in([ post.id ])

    post.categories = categories

    const id = mongoose.Types.ObjectId(post.id)

    const pic = await File.findOne({ 'related.ref': id })

    post.pic = pic

  }

  res.send(posts)

}