node.js - 确定 MongoClient 实例是否已连接

标签 node.js mongodb mongoose

我有这段代码来检查我的 MongoClient 是否已经连接:

 connect(): Promise<null> {
    const self = this;

    if (this.client && this.client.isConnected()) {
      return Promise.resolve(null);
    }

    return MongoClient.connect(this.uri).then(function (client) {
      const db = client.db('local');
      self.client = client;
      self.coll = db.collection('oplog.rs');
      return null;
    });
  }

问题是 isConnected 方法需要一些强制参数:

    isConnected(name: string, options?: MongoClientCommonOption): boolean; 

这里是信息:

http://mongodb.github.io/node-mongodb-native/3.0/api/MongoClient.html#isConnected

所以我需要传递数据库名称以外的任何内容吗? 如果我不知道它可能连接到哪个数据库怎么办?

当我在运行时调试时,我只看到一个选项参数(只有一个参数,而不是两个):

enter image description here

(查看图片最右侧的 isConnected 方法)。

最佳答案

文档不正确。看着source code (第 395 行),唯一支持的参数是可选的 options 对象。

MongoClient.prototype.isConnected = function(options) {
  options = options || {};
  if (!this.topology) return false;
  return this.topology.isConnected(options);
};

所以忽略文档,不要传递数据库名称。

关于node.js - 确定 MongoClient 实例是否已连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49332728/

相关文章:

node.js - 我们如何在Microsoft Bot Framework中为不同的用户维护不同的 session ?

javascript - 更新 Meteor 用户配置文件中的购物车对象

javascript - 如何根据 mongodb/mongoose 查询中的参数更改结果位置?

mongodb - 如何将数组 id 引用到另一个集合

node.js - Node 不允许自定义堆限制(--max-old-space-size)

javascript - 如何将 getUserMedia() API 与 Node.js 结合使用来实时流媒体?

mongodb - db.mydb.find({tag :'java' }).count() 和 db.mydb.count({tag :'java' }) 在 mongodb 中有什么区别

mongodb - 如何在解码 MongoDB 文档时忽略空值?

node.js - Mongoose 嵌套对象数组中的唯一值

node.js - 在 Express 路由器中使用 mongoDB