2016-10-02 6 views
0

私はこのスキーマを持っている:マングース - 参照オブジェクトの配列内の特定のオブジェクトをどのように更新しますか?

var UserSchema = new Schema({ 
    name: String, 
    username: { 
    type: String, 
    required: [true, "Please enter a username"], 
    minlength: [6, "Username must be at least 6 characters"], 
    maxlength: [15, "Username cannot exceed 15 characters"], 
    unique: true 
    }, 
    password: { 
    type: String, 
    required: [true, "Please enter a password"], 
    minlength: [6, "Password must be at least 6 characters"], 
    maxlength: [17, "Password cannot exceed 17 characters"], 
    }, 
    roommates: [{roomate: {type: Schema.Types.ObjectId, ref: "User"}, status: {type: String, default: "pending"}}] 
}) 

は、これは私のコントローラである(のidのは、ユーザーのちょうど2つのランダムなIDがあり、私は私のDBに持っているので、それを無視する:

update: function(req, res) { 
    User.findOne({ 
     _id: "57f1645c05ec06099ead3db6", 'roommates._id': "57f16436190a09099a1ddbde" 
    }, {'roommates.$': 1}, function(err, user1) { 
     user1.update() 
    }) 
    } 
} 

私のコントローラは全く役に立ちません目的は、そのルームメイトの配列の内部に到達し、特定のオブジェクトを1つ見つけ、それを更新して、ステータスが「ペンディング」(デフォルト)からコントローラーで設定できる新しい文字列値に変わるようにすることです。

私はgettinですgはクエリで失われます。あなたはどのようにマングースを使ってこれをしますか?ここで

おかげ

答えて

0

が答えです:

update: function(req, res) { 
    User.findOneAndUpdate({ 
     _id: "57f16436190a09099a1ddbde", "roommates._id": "57f1645c05ec06099ead3db6" 
    }, {$set: {"roommates.$.status": "active"}}, function(err, res) { 
     if (err) { 
     console.log(err); 
     } else { 
     console.log("status updated"); 
     } 
    }) 
    } 
関連する問題