0

我已经创建了一个启用 SSL 的 DocumentDB,并且我正在使用mongodb包来使用主机NodeJS连接这个数据库。Bastion问题是,如果我在函数中放置一个硬编码字符串MongoClient.connect,我就能够成功连接数据库。硬编码的代码如下所示。

let MongoClient = require('mongodb').MongoClient;
let client = MongoClient.connect(
   'mongodb://User:PWD@DBURL:27017/DBNAME?tls=true&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false',
    {
      tlsCAFile: __dirname + `rds-combined-ca-bundle.pem` //Specify the DocDB; cert
    },
    function(err, client) {
        if(err)
            throw err;

        console.log("1111111  2222222!!");    
        //Specify the database to be used
        db = client.db('DBNAME');
        //Specify the collection to be used
        col = db.collection('COLNAME');
        console.log("1111111 connected to db!!");

       client.close();
    });

现在因为这不是将硬编码值放入代码中的理想情况。我正在尝试从环境变量中读取值,并尝试将整个 URL 放入一个字符串变量中,并将该变量传递给该函数,如下所示。

const DBURL = "mongodb://"+user+":"+pwd+"@"+dbURL+":"+port+"/"+dbName+"?tls=true&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false";
let client = MongoClient.connect(DBURL,
    {
      tlsCAFile: __dirname + `rds-combined-ca-bundle.pem` //Specify the DocDB; cert
    },
    function(err, client) {

现在这个超时连接数据库。

关于它的任何建议,或者我应该使用任何其他包通过 NodeJS 连接 DocumentDB,请告诉我。

4

1 回答 1

0

像这样的东西对我有用:

const { MongoClient } = require('mongodb')

const DOCUMENTDB_CONNECTION_STRING = `mongodb://${process.env.DOCDB_USER}:${process.env.DOCDB_PASS}@${process.env.DOCDB_ENDPOINT}/${process.env.DOCDB_DBNAME}?tls=true&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false`

const client = MongoClient.connect(
    DOCUMENTDB_CONNECTION_STRING, {
        tlsCAFile: `rds-combined-ca-bundle.pem` //Specify the DocDB cert
    },
    function(err, client) {

这是你想要的?

于 2022-03-01T13:45:50.827 回答