【发布时间】:2014-11-22 12:43:08
【问题描述】:
我已经阅读了几篇关于此的帖子和文章,但我不太明白。
我的 Mongoose 模型中有一段代码,它基本上负责邀请人们加入一个项目。给定一些受邀者,我会查看他们是否在数据库中,如果没有,我会继续创建它们并更新受邀者列表中的 id。
jslint 抱怨循环,我正在努力处理回调(以及正确的整体模式,当你有一个循环保存带有回调的数据库时。显然我想要发生的是循环完全完成,任何新用户被添加到数据库中,id 是原始哈希(被邀请者)中的更新,然后回调发生。
ProjectSchema.methods.invite = function invite(invitees, callback) {
var User = mongoose.model('User');
var emails = _.pluck(invitees, 'email');
// loop through invited hash to see if we already have those users in the db
User.find({ 'email': { $in: emails}}, function (err, users) {
for (var invited = 0; invited < invitees.length; invited++) {
var found = false;
// logic here to see if they are already users using the users param
if (found) {
// they are already in the db so do unrelated things.
} else {
// create new user
var User = mongoose.model('User');
var newUser = // set up new user here
newUser.save(somecallback?);
// update invitees list with id
}
}
callback(err, invitees);
});
};
【问题讨论】:
标签: javascript node.js asynchronous callback mongoose