我的应用程序中有mongoDB.

在我听应用程序之前,我想判断mongoDB是否已连接.

这是最好的方式吗?

这是我的服务器.js文件:

var express = require('express');
var mongoDb = require('./mongoDb');
var app = express();

init();

function init() {
    if (mongoDb.isConnected()) {
      app.listen(8080, '127.0.0.1');
    }
    else {
      console.log('error');
    }
}

isConnectedgetDbObject分.

然后,按连接的属性进行isConnected次解析/拒绝.

这是mongoDb.js文件:

//lets require/import the mongodb native drivers.
var mongodb = require('mongodb');
// Connection URL. This is where your mongodb server is running.
var url = 'mongodb://localhost:27017/myDb';

var connectingDb; // promise

//We need to work with "MongoClient" interface in order to connect to a mongodb server.
var MongoClient = mongodb.MongoClient;

init();

module.exports = {
    isConnected: isConnected
}

// Use connect method to connect to the Server
function init() {
  connectingDb = new Promise(
    function (resolve, reject) {
      MongoClient.connect(url, function (err, db) {
        if (err) {
          console.log('Unable to connect to the mongoDB server. Error:', err);
          reject(err);
        }
        else {
          console.log('Connection established to', url);

          //Close connection
          //db.close();
          resolve(db);
        }
      });

    }
  );
}

function getDbObject() {
  return connectingDb().then(myDb => {
                                       return {
                                          connected: true,
                                          db: myDb
                                        }
                                      }
                              )
                       .catch(err =>  {
                                        return {
                                          connected: false,
                                          db: err
                                        }
                                      }
                             )
}

function isConnected() {
    return new Promise(
        function(resolve, reject) {
          var obj = getDbObject();
          if (obj.connected == true) {
            console.log('success');
            resolve(true);
          }
          else {
            console.log('error');
            reject(false);
          }
        }
    )

}

感谢您的帮助!

推荐答案

有多种方法取决于数据库的配置方式.对于独立(单个)实例.你可以用这样的东西

Db.connect(configuration.url(), function(err, db) {
  assert.equal(null, err);

如果你有一个配置服务器和多个碎片的共享环境,你可以使用

db.serverConfig.isConnected()

Mongodb相关问答推荐

MongoDB 4.4如何使用未知密钥更新dict

分组前的 MongoDb 聚合总数

如何在 go mongo-driver 中为 options.FindOne() 设置限制

MongoDB 使用 pymongo 收集 500K 文档的写入速度很差

Mongoose 返回包含属性内任何位置的值的所有文档

使用名为 Object 键的 uuid 创建 mongodb 文档

从嵌套数组中 id 匹配的另一个集合中获取所有字段

使用 Node.js 通过 SSL 连接到 MongoDB

更新 MongoDB 中嵌套实体数组中的属性

如何将查询结果(单个文档)存储到变量中?

Java MongoDB FindOne 获取最后插入的记录

如何在 MongoDB 中进行内部连接?

如何在 mongodb 本机驱动程序中对 find() 进行字段 Select ?

ExpressJS & Mongoose REST API struct :最佳实践?

MongoDB $or 查询

MongoDB GridFS VS 直接磁盘 IO

使用自定义 _id 值时 mongodb 中的 Upserts

MongoDB 查询:字段不存在或具有特定值

缩短 MongoDB 属性名称值得吗?

我如何将 mongodb 与electron一起使用?