비밀 키 저장소에 azure-keyvault를 사용하고 있습니다. 구성 파일에 비밀 키를 사용하고 싶지만 콜백에 문제가 있습니다. 문제는 bookshelf.js를 호출하기 전에 반환하지 않는 비밀 및 암호는 정의되지 않은입니다 :비밀 키 저장소의 콜백
config.js :
var environment = process.env.NODE_ENV || 'development';
module.exports = require('./env/' + environment + '.js');
keyvault.js :
var sqlPassword = function(){
var promise = new Promise(
function resolver(resolve, reject) {
var secretId = secrectUri + 'secrets/password';
client.getSecret(secretId, function(err, result) {
if (err) throw err;
resolve(result.value);
});
}
);
};
module.export = {
sqlPassword: sqlPassword()
};
env/development.js
var secret = require('../keyvault');
module.exports = {
db: {
client: 'mysql',
connection: {
host : '127.0.0.1',
user : 'sa',
password : secret.sqlPassword,
database : 'avin',
charset : 'utf8'
},
debug: true
}
};
bookshelf.js
var config = require('./config');
var knex = require('knex')(config.db);
var bookshelf = require('bookshelf')(knex);
bookshelf.plugin('registry');
module.exports = bookshelf;
은 당신의 코드에 두 가지 문제가 있습니다
var config = require('./config/config');
var express = require('express');
var app = express();
var bookshelf = require('./config/bookshelf');
app.get('/', function (req, res) {
res.send('Hello World!');
});
app.listen(8000, function() {
console.log('Example app listening on port 8000!');
});
은 keyvault.js의'promise' 문제입니다. 당신은 그것을 선언했지만 그것을 결코 부르지 않았습니다. –
안녕하세요 Sharma, 대답은 tq이지만 암호는 Promise 객체이며 client.getSecret이 호출하지 않는 것처럼 보입니다 ... – Alvin
예, 실제로 'db'를 만들면 약속이 보류 상태입니다. 솔루션은 먼저 암호를 가져 와서 db 객체에로드 할 수 있습니다. –