Node.js 无法连接到受密码保护的MongoDB服务器/DB

Node.js 无法连接到受密码保护的MongoDB服务器/DB,node.js,mongodb,Node.js,Mongodb,在针对本地mongoDB成功测试了我的Node应用程序之后,我现在正尝试连接到我们的服务器db—它与我的本地mongoDB不同,受用户和密码保护 我在尝试连接到服务器时遇到问题。具体来说,我得到了以下错误: MongoError:在调用之前必须连接MongoClient MongoClient.prototype.db 我尝试的信条是这样的: { "MONGO_URL": "mongodb://myuser:mypassword@someurl.com:27017?authSource=ad

在针对本地mongoDB成功测试了我的Node应用程序之后,我现在正尝试连接到我们的服务器db—它与我的本地mongoDB不同,受用户和密码保护

我在尝试连接到服务器时遇到问题。具体来说,我得到了以下错误:

MongoError:在调用之前必须连接MongoClient MongoClient.prototype.db

我尝试的信条是这样的:

{
  "MONGO_URL": "mongodb://myuser:mypassword@someurl.com:27017?authSource=admin",
  "MONGO_DATABASE": "bta",
  "MONGO_COLLECTION": "jobs"
}
这是我的连接代码:

const config = require('./configuration');
const url = config.get('MONGO_URL');
const dbName = config.get('MONGO_DATABASE');

const MongoClient = require('mongodb').MongoClient;
const client = new MongoClient(url);

async function getJobDetails() {
  client.connect(async function () {
    try {
      const db = await client.db(dbName);
      // do stuff
     });
    } catch (error) {
      console.log(error);
    }
  });
}
我在这里遗漏了什么?

试试:

const mongoClient = require('mongodb').MongoClient;

mongoClient.connect(url, { useNewUrlParser: true }, function(client_err, client) {
    if (client != null) {
        var client_db = client.db(dbName);
    }
    client.close();
});
作为MongoDB。

如果服务器上的数据库配置正确,请尝试再次检查它。

const MongoClient = require('mongodb').MongoClient;
const assert = require('assert');

// Connection URL with password example
const url = 'mongodb://user:password@address:27017?readPreference=primary&authSource=admin';

// Database Name
const dbName = 'myproject';

// Create a new MongoClient
const client = new MongoClient(url);

// Use connect method to connect to the Server
client.connect(function(err) {
  assert.equal(null, err);
  console.log("Connected successfully to server");

  const db = client.db(dbName);

  client.close();
});
这适用于有效的本地主机/服务器url


我找到了问题所在,并能够将其连接起来。问题是该站点是安全的,因此我必须向url连接字符串添加
ssl=true

const url = 'mongodb://user:password@someurl.com:27017/bta?ssl=true&authSource=admin';

将此设置为单独的文件并尝试运行它。得到了完全相同的错误:
MongoError:MongoClient必须在调用MongoClient.prototype.db
之前连接。请尝试记录回调中返回的
err
。显然,此错误来自服务器。我想,这意味着我已经访问了服务器,但凭据被拒绝了?听起来对吗?那么,就是说,这和我在初始代码中遇到的错误是一样的。因此,问题必须与凭据有关,而不是与我用于连接的代码有关。