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控制檯並檢查數據庫中團隊的情況,因爲這會告訴您錯誤在哪裏(因爲我相信這是這樣)。 –