Да, вы можете сделать это, используя Template_literals :
process.env.uName = 'username'
process.env.password = 'password'
process.env.server = 'cluster123-abcde.mongodb.net'
const uName = process.env.uName
const password = process.env.password
const server = process.env.server
const url = `mongodb+srv://${uName}:${password}@${server}/test?retryWrites=true&w=majority`
mongoose.connect(url, { useNewUrlParser: true });
Примечание: Если вы пользуетесь каким-либо облачным провайдером, то у них есть что-то вроде aws -secrets-manager или aws -systems-manager-parameter-store для безопасного хранения переменных среды. Вы можете получить эти значения отсюда и настроить их во время выполнения до установления соединения. Или традиционно вы можете найти способ заполнить переменные окружения во время развертывания.
Если вам это требуется более безопасным способом, то вы можете зашифровать всю строку подключения и сохранить зашифрованную строку + * 1016. * ключ где-то и во время создания соединения расшифровывайте те, чтобы установить соединение, проверьте это:
const crypto = require('crypto'); // Take use of crypto library from Node.Js
const secretKey = 'somestringlengthof32';
function decrypt(text) {
let res = null;
try {
const textParts = text.split(':');
const iv = Buffer.from(textParts.shift(), 'hex');
const encryptedText = Buffer.from(textParts.join(':'), 'hex');
const decipher = crypto.createDecipheriv('aes-256-cbc', Buffer.from(secretKey), iv);
let decrypted = decipher.update(encryptedText);
decrypted = Buffer.concat([decrypted, decipher.final()]);
res = decrypted.toString();
} catch (err) {
logger.error('Error in decrypt func ::', err);
}
return res;
}
function encrypt(text) {
const iv = crypto.randomBytes(16);
const cipher = crypto.createCipheriv('aes-256-cbc', Buffer.from(secretKey), iv);
let encrypted = cipher.update(text);
encrypted = Buffer.concat([encrypted, cipher.final()]);
return `${iv.toString('hex')}:${encrypted.toString('hex')}`;
}
const urlString = 'mongodb+srv://username:password@cluster123-abcde.mongodb.net/test?retryWrites=true&w=majority'
const encryptedString = encrypt(urlString)
console.log(encryptedString) // Store this string & secretKey somewhere in secured place & use these while connection creation by calling decrypt function
console.log(decrypt(encryptedString))