【发布时间】:2018-01-23 22:34:42
【问题描述】:
在渲染页面之前,我需要确保从 api 调用中获取的所有内容都保存到数据库中。
let saveUsersToDB = function () {
//fetch users func
return getAllUsers.then((data) => {
//save to db func
async.each(data, (user, callback) => {
//Mongoose model
let newUser = new User;
//save to db
newUser.save((err) => {
if (err) {
callback(err)
}
else {
callback('user saved');
}
})
// async.each callback
}, function (err) {
if (err) {
console.log('error');
} else {
console.log('Async each done');
}
});
});
};
当我这样称呼时:
saveUsersToDB().then(()=>{
console.log("All users saves")
})
结果是:
//All users saved
//Async each done
我无法找出正确的结构来保持 then() 链中的正确顺序。
【问题讨论】:
-
不熟悉
async方法,但我想您需要创建一个新的 Promise,在回调中解决(或拒绝)它,然后返回 Promise。或者改用Promise.all,也许?
标签: javascript node.js express fetch async.js