mongooseを使用してユーザーの電子メールのリストを含むグループを検索するjavascript機能を使用しています。リストの各ユーザーを見つけて、古いグループ名の代わりに新しいグループ名を追加したいと思ったら、理由はわかりませんが、機能しません。forループを実行する前にグループに戻ります。ユーザーは変更されません。ここでMongoose、forループでモデルを更新できません
は私のユーザモデルである:
var userSchema = mongoose.Schema({
local : {
email : String,
password : String,
}
groups : { type: [String], default: []}
});
そして、ここに私のグループのモデル:
var groupSchema = mongoose.Schema({
title : String,
creator : String,
listOfUsers : { type: [String], default: []}
});
そして、ここに私の機能:
Group.findOne({ '_id': groupId}, function (error, group){
var oldTitle = group.title;
group.title = req.body.title;
group.save();
if(error){
throw (error)
}
for(var i = 0; i < group.listOfUsers.length;i++){
User.findOne({'local.email': group.listOfUsers[i]}, function(error,user){
if(error){
throw (error)
}
for(var j=0;j<user.groups.length;j++){
if(user.groups[j] == oldTitle){
user.groups[j] = group.title;
user.save();
}
}
});
}
return res.json(group);
'group.save'は、非同期操作、使用するコールバックまたはそこ約束です冒頭で
を忘れないでください。 – alexmac
いいえ、私はいくつかの例を見つけようとしています – fandro