在azure色的钥匙库上callback
我正在使用azure-keyvault来存储秘密,我想使用我的configuration文件中的秘密,但在callback中面临一些问题。 问题是调用bookshelf.js之前没有返回的秘密,并且密码是undefined :
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;
app.js
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!'); });
你的代码有两个问题。
首先,你声明了promise
对象,但从来没有调用它。
keyvault.js
var sqlPassword = function(){ //promise code return promise; }; module.exports = { sqlPassword: sqlPassword };
ENV / development.js
module.exports = { db: { //some other code connection: { password : secret.sqlPassword().then(function(result){ return result; }), }, //some other code } };
希望能帮助到你。