2017-01-03 31 views
2

我有這樣的貓鼬模式:

// ------- creating active_rooms model ------- 

var active_rooms_schema = mongoose.Schema({ 
    room_name: String, 
    users: [String] 
}); 
var active_rooms = mongoose.model('active_rooms', active_rooms_schema); 

數據庫看起來是這樣的:

[{"_id":"586b8eeeebb48c65bcbbc5f3","room_name":"my_roome","__v":0,"users":["sam","sally"]}] 

漂亮strightforward。我有一個聊天室和人(用戶到該房間的陣列)。一旦他/她離開房間,我想要移除某個人。

therfore,我寫我的服務器上運行此代碼:

remove_user_from_room: function (user_name, room_name) { 
    console.log("remove_user_from_room: " + room_name + ", user: " + user_name); 
    active_rooms.update({'room_name': room_name }, { $pullAll: {'users': [user_name] } }) 
}, 

但是,此代碼不會刪除陣列的用戶。它不會更改我的數據庫中的數組。

我的錯誤在哪裏?

感謝

+1

在更新調用中,它不應該是用戶而是用戶名嗎? – Musa

+0

我的不好,謝謝..更新了我的答案。但問題依然存在:(((( – Matoy

+1

更新代碼語法看起來正確,我猜可能它由於某種原因不匹配,你可以用{'room_name':room_name}做一個findOne調用並檢查你是否得到正確的文檔或者沒有 –

回答

1

你爲什麼要使用$ pullAll,如果你想只刪除一個人。 使用$拉

remove_user_from_room: function (user_name, room_name) { 
    console.log("remove_user_from_room: " + room_name + ", user: " + user_name); 
    active_rooms.update({'room_name': room_name }, { $pull: {'users': user_name } }) 
}, 
+0

試過你的代碼仍然沒有改變active_rooms集合:(( – Matoy

1

的問題是缺乏同步的,我需要使用承諾..上面的代碼是正確的。

相關問題