express+mongodb开发时,mongodb报错:MongoError: server instance in invalid state undefined
发布于 8 年前 作者 chenjsh36 7310 次浏览 来自 问答

问题: 问题如标题所示,当前端同时向后台请求两个需要操作数据的接口时,后台就报错了,感觉是因为第二次请求时前一次数据库还没有关闭导致报错。

代码如下: db.js:

var settings = require('../settings'),
    Db = require('mongodb').Db,
    Connection = require('mongodb').Connection,
    Server = require('mongodb').Server;
module.exports = new Db(settings.db, new Server(settings.host, settings.port), {safe: true});

user.js

user.checkCollect = function(username, artid, callback) {
    mongodb.collection('users', function (err, collection) {
        if (err) {
          mongodb.close();
          return callback(true);
        }
        collection.findOne({
          "name": username
        }, function(err, post) {
          
          if (err) {
            mongodb.close();
            return callback(err);
          }
          if (!post) {
            mongodb.close();
            return callback(true);
          }
          var userCollections = post.collections
            , hasCollected = false
            ;
          for (var i = 0, len = userCollections.length; i < len; i++) {
            if (userCollections[i] === artid) {
              hasCollected = true;
              break;
            }
          }
          callback(false, hasCollected);
          mongodb.close();
        })
      })
    }
}

这是数据库操作的代码,经过测试,发现无论请求的是同一个接口还是不同的接口,只要同时请求两次以上,都会出现这个问题,求大牛指教!

1 回复

我没看代码。一般错误都在mongodb数据库mongodb。close();这里

回到顶部