node.js - mongodb 中的 $pullAll 不起作用

标签 node.js mongodb mongoose

我有这个 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);

数据库看起来像这样:

[{"_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] } } )
},

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

我的错误在哪里?

谢谢

最佳答案

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

关于node.js - mongodb 中的 $pullAll 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41442954/

相关文章:

mongodb - Mongoose.js instance.save() 回调未触发

javascript - httpdispatcher 中的 setStatic 函数

javascript - 在 Mongoose 中使用 Multer 将文件存储到 MongoDB

mongodb - MongoNetworkError : failed to connect to server [amazonaws. com:27017] 首次连接时 [错误:无法获取本地颁发者证书

node.js - 如何使用 GridStore 存储具有多键 ID 的文档?

docker - Mongoose 查询/模式错误仅在 docker 容器中

node.js - 如何在 NodeJS 中将二进制数据保存为 jpg 图像

node.js - 将 auth0 集成到 web 应用程序 express/node js 中

javascript - 当我已经安装了 Node 10 时,如何安装 NodeJS 的 LTS 版本?

json - NodeJS-ExpressJS mongoose API POST 请求带外键