0
所以我有用户和团队。我希望团队拥有一组用户,并使用addUser函数向团队添加用户。我成功推送到团队用户数组并保存结果,但在该函数之后,我将打印出相同的团队,并且阵列中没有用户。我不确定这是一个.save()问题还是什么。猫鼬 - 无法保存文档的属性
任何帮助表示赞赏,谢谢。
...
var userSchema = new Schema({
name: { type: String, required: true, unique: true },
age: Number
});
var teamSchema = new Schema({
name: { type: String, required: true, unique: true },
user: [{ type: Schema.ObjectId, ref: 'User' }]
});
userSchema.statics.createUser = function(opts, cb) {...};
teamSchema.statics.createTeam = function(opts, cb) {...};
teamSchema.statics.addUser = function(opts, cb) {
Team.find({_id: opts.team}).exec(function (err, team) {
team[0].user.push(opts.user);
team[0].save(function(err, save) {
console.log("--------------------");
console.log(team[0]); //team contains the added user here
console.log("--------------------");
return cb(null);
});
});
};
var User = mongoose.model('User', userSchema);
var Team = mongoose.model('Team', teamSchema);
var async = require('async');
var user1;
var user2;
var team;
async.waterfall([
function(d){User.createUser({name :'test1'},function(err, user){
user1 = user;
d(err);
});
},
function(d){User.createUser({name :'test2',age :20},function(err, user){
user2 = user;
d(err);
});
},
function(d){Team.createTeam({name :'team'},function(err, obj){
team = obj;
d(err);
});
},
function(d){Team.addUser({user : user1._id,team : team._id}, function(err){
console.log(team);
d(err);
});
},
function(d){Team.addUser({user : user2._id,team : team._id}, function(err){
console.log(team);
d(err);
});
}
],function(err){
if(err){
console.log(err);
}
else{
User.count({},function(err,count){console.log("Number of users:", count);});
Team.count({},function(err,count){console.log("Number of teams:", count);});
console.log(team);
}
});
returns:
--------------------
{ _id: 5583ed760958ab941a58bae9,
name: 'team',
__v: 1,
user: [ 5583ed760958ab941a58bae7 ] } //user1 added
--------------------
{ __v: 0, name: 'team', _id: 5583ed760958ab941a58bae9, user: [] }
//after that function call the team has no users
--------------------
{ _id: 5583ed760958ab941a58bae9,
name: 'team',
__v: 2,
user: [ 5583ed760958ab941a58bae7, 5583ed760958ab941a58bae8 ] }
//user2 added and user1 still there
--------------------
{ __v: 0, name: 'team', _id: 5583ed760958ab941a58bae9, user: [] } //no users again
Number of users: 2
Number of teams: 1 //only 1 team exists
我似乎遇到了添加用户的相同问题,但最终没有团队中的用户。 – Albo
当然,因为updateOne不会返回新的更新文档,除非您要求它。请检查文档..我会为您更新答案。 –
加上你有另一个问题,我想你不会返回更新对象的团队变量。为了安全起见,您也可以在完成所有循环后查询团队,我还建议您运行mongo控制台并检查数据库中团队的情况,因为这会告诉您错误在哪里(因为我相信这是这样)。 –