我使用MongooseJS连接到MongoDB
我正在创建一个新团队。保存团队后,我想为我的用户添加对团队的引用。但不幸的是,每当我将团队添加到我的用户并保存用户时,我的回调就不会被调用。有什么想法吗?
TeamRepository.prototype.createForUser = function(user, data, callback) {
var team,
_this = this;
if (user == null) {
user = null;
}
if (data == null) {
data = {};
}
if (callback == null) {
callback = (function() {});
}
team = new Team({
name: data.name,
description: data.description,
state: data.state
});
return this.save(team, function(err) {
if (err) {
return callback(err, team);
} else {
user.teams.push({
team: team._id
});
return _this.save(user, function(err) {
return callback(err, team);
});
}
});
};
特别是这一行。请注意,我有两个嵌套保存。
return _this.save(user, function(err) {
return callback(err, team);
});
任何帮助都会很棒。
答案 0 :(得分:5)
我已经解决了这个问题。在我的用户模型中,我已经挂钩了save事件,而没有调用next()来保存。
schema.pre('save', function(next) {
var _this = this;
if (this.isNew || this.isModified('password')) {
return hashPassword(this.password, function(err, hash) {
if (err) {
return next(err);
}
_this.password = hash;
return next();
});
} else {
return next(); // missing this
}
});
以下是我的TeamRepository.save(),因为你问过。
TeamRepository.prototype.save = function(model, callback) {
if (model == null) {
model = null;
}
if (callback == null) {
callback = (function() {});
}
if (model) {
model.increment();
return model.save(callback);
} else {
if (callback) {
return callback(null);
}
}
};