无法从节点 js 后端连接到 documentDB aws

问题描述

我正在尝试从支持的节点 js 连接我的文档数据库 但 _mongoClient 返回未定义。

我打开了 ssh 并且我拥有所需的所有权限,但它仍然无法正常工作,并且控制台中也没有错误

你能帮忙吗?

这是我的代码

const {MongoClient,ObjectID} = require('mongodb');
const fs = require('fs');

 const path = require('path');
const filePath = path.resolve(__dirname,caFile)
const ca = [fs.readFileSync(filePath)];
let hostName = 'localhost';
let _mongoClient;
const baseurl = `mongodb://${username}:${password}@${hostName}:${port}/`;
let urlParams = `ssl=true&ssl_ca_certs=rds-combined-ca-bundle.pem&retryWrites=false`;
const connectOptions = {
    sslCA: ca,useUnifiedTopology:true
}

_mongoClient = await MongoClient.connect(`${baseurl}?${urlParams}`,connectOptions,function (err,client) {
        console.log(err+","+ client);
    });

解决方法

该问题似乎与 async/await. You cannot have awaitwithoutasync` 相关。

除此之外,您不会在回调之外获得 _mongoClient。您只能在回调中访问客户端。

MongoClient.connect(`${baseurl}?${urlParams}`,connectOptions,(err,client) => {
  if(err) console.error(err);
  else console.log(client);
});

或跳过回调以获得承诺

const _mongoClient = await MongoClient.connect(`${baseurl}?${urlParams}`,connectOptions);

MongoClient.connect(`${baseurl}?${urlParams}`,connectOptions).then(_mongoClient => {
  console.log(_mongoClient)
}).catch(error => {
  console.log(error)
});