在承诺中包装循环时遇到问题
我需要在我渲染页面之前创建一个用户数组但我似乎无法弄清楚如何包装我的数据库调用
提前致谢。
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
答案 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()
在所有承诺得到解决或我拒绝后才解决。