等待多个数据库调用

时间:2018-04-26 01:15:16

标签: javascript node.js promise

在承诺中包装循环时遇到问题

我需要在我渲染页面之前创建一个用户数组但我似乎无法弄清楚如何包装我的数据库调用

提前致谢。

const { environment } = require('@rails/webpacker')
const vue =  require('./loaders/vue')

 environment.loaders.append('vue', vue)
 environment.loaders.append('babel', {
 test: /\.js$/,
  loader: 'babel-loader'
 })
 module.exports = environment

2 个答案:

答案 0 :(得分:1)

friends转换为承诺数组,等待Promise.all所有承诺,如下所示:

router.get('/friends', auth.isLogged(), (req, res) => {
  let friendsList = [];
  User.findById(req.user._id, {
      friends: 1,
    },
    async (err, user) => {
      const friendsList = await Promise.all(
        user.friends.map(({ _id }) => User.findById(_id))
      );
      console.log(friendsList);
    }
  );
});

答案 1 :(得分:0)

将其包装在Promise.all()

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/all

Promise.all()在所有承诺得到解决或我拒绝后才解决。