【发布时间】:2021-07-29 16:43:07
【问题描述】:
我对 Node.js 比较陌生。我正在使用现有的 Node.js express 应用程序。它在服务器启动时创建一个新的 Mongodb 连接,并将其分配给一个全局变量以供其他地方使用。所有这些都可以正常工作。
#In Server.js
async function startServer() {
logger.info("Connecting to the database...");
clientConnect(dbSecrets).then(function (client){
if (!client) {
logger.error("Error connecting to the DB. Shutting down...", new LogMsg(filename, functionName, null, null).toJSON());
process.exit(-1);
}
global.entityDb = client;
.........
#CLient Creation In Mongo.js
clientConnect: async ( dbSecrets ) => (
client = await (() => (new Promise(( resolve, reject ) => (
MongoClient.connect(`mongodb://${dbSecrets.mongoUsername}:${dbSecrets.mongopassword}@${configuration.db.host}`, {
useNewUrlParser: true,
useUnifiedTopology: true,
family: 4
},
( error, client ) => {
if ( error ) {
logger.error(error);
reject(error);
}
resolve(client);
})
)
)).catch(( error ) => {
logger.error(`(mongo.js - clientConnect()) - ${error.toString()}`);
return false;
})
)()),
clientClose: async ( client ) => {
client.close();
return true;
},
dbSecrets 的值在应用程序启动时从 Hashicorp Vault Key Value Secret 注入并传递到新的 MongoClient。我想更新应用程序以使用hashicorp vault databases,这些用户名/密码值可能会过期。是否可以创建 MongoClient 以便如果 dbSecrets 中的值被更新,那么随后重新连接到数据库将使用新值?
全局变量能否以某种方式用于 URI?
【问题讨论】:
标签: node.js mongodb express global-variables hashicorp-vault