Node.js 带有 hashicorp Vault 数据库的 MongoClient
Node.js MongoClient with hashicorp Vault databases
我对 Node.js 比较陌生。我正在使用现有的 Node.js 快速应用程序。它在服务器启动时创建一个新的 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?
仅供参考,通过在应用程序(Kubernetes Pod 中的容器)的生命周期内不让连接过期来解决这个问题。它会在当前凭据过期之前续订租约,而不是尝试加载新凭据。
我对 Node.js 比较陌生。我正在使用现有的 Node.js 快速应用程序。它在服务器启动时创建一个新的 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?
仅供参考,通过在应用程序(Kubernetes Pod 中的容器)的生命周期内不让连接过期来解决这个问题。它会在当前凭据过期之前续订租约,而不是尝试加载新凭据。