我正在使用MongoDb和socket.io编写Node.js项目。我遇到了一个问题。我有一个名为rooms rooms = db.collection('rooms');
的馆藏
当我试图加入一个房间时,这是我的代码
rooms.find({name: roomName}).limit(1).toArray()
.then(function (res) { //if successful
res = res[0]; //i get my username
如果有一个给定id
的房间我连接到它,否则必须创建它。
但是当我创建一个新房间时,我得到了undefined
,但是当我第二次连接时(房间已经存在),一切正常,我得到了所有信息。因此,当我创建一个房间并连接到它时,我不会获得我的用户名,但是当它被创建时(我第二次连接它)它会显示我的方法。
var mongo = require('mongodb').MongoClient
- 模块,
function http(io) { mongo.connect(config.mongodb_url)
.then(function (db) { ...
-connection,
"mongodb version": "^2.1.7"
这就是我创建房间的方式
rooms.findOneAndUpdate(
{name: roomName},
{$addToSet: {users: uuid}}
).then(users_update).catch(logger.error);
})赶上(logger.error);
我想知道find方法中是否有一些超时?或者在哪里可以犯这个错误?
答案 0 :(得分:0)
我找到了答案。就是这么简单:我在{ upstream: true }
函数中添加了findOneAndUpdate()
。