$ pullAll in mongoose不起作用

时间:2017-01-03 11:53:56

标签: node.js mongodb mongoose

我有这个猫鼬模式:

// ------- 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);

DB看起来像这样:

[{"_id":"586b8eeeebb48c65bcbbc5f3","room_name":"my_roome","__v":0,"users":["sam","sally"]}]
非常直截了当。我有一个聊天室和人(该房间的用户阵列)。我想在他/她离开房间后将其移除。

因此,我在我的服务器上写了这段代码:

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] } } )
},

但是,此代码不会从数组中删除用户。它不会更改我的数据库中的数组。

我的错误在哪里?

由于

2 个答案:

答案 0 :(得分:1)

如果您只想删除一个人,为什么使用$ pullAll? 使用$ pull

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 } } )
},

答案 1 :(得分:1)

问题是缺乏同步,我需要使用promises ..上面的代码是正确的。