find()方法可能超时 - mongoDb

时间:2016-03-06 12:13:02

标签: node.js mongodb

我正在使用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方法中是否有一些超时?或者在哪里可以犯这个错误?

1 个答案:

答案 0 :(得分:0)

我找到了答案。就是这么简单:我在{ upstream: true }函数中添加了findOneAndUpdate()