在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 } }; 

希望能帮助到你。