问题描述
我正在尝试从支持的节点 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
awaitwithout
async` 相关。
除此之外,您不会在回调之外获得 _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)
});