如何从 Nodejs 中的 promise 中获取价值
How to grab value from promise in Nodejs
您好,我正在 Azure 函数中编写一个 nodejs 代码来捕获保存在 Azure 密钥保管库中的用户名。
这是我写的代码
module.exports = async function (context, req) {
var msRestAzure = require('ms-rest-azure');
var KeyVault = require('azure-keyvault');
function getKeyVaultCredentials() {
return msRestAzure.loginWithAppServiceMSI({
resource: 'https://vault.azure.net/'
});
}
function getKeyVaultSecret(credentials) {
let keyVaultClient = new KeyVault.KeyVaultClient(credentials);
return keyVaultClient.getSecret('https://myDNS.vault.azure.net/', 'username', '');
}
const username = getKeyVaultCredentials()
.then(getKeyVaultSecret)
.then(function (secret){
context.log(`Your secret value is: ${secret.value}.`);
return secret.value;})
.catch(function (err) {throw (err);});
context.log(username)
context.res = {
body: username
};
}
我想获取用户名,但它给我的输出是
promise {pending}
如何等待函数结束以便提取用户名。
我是 nodejs 新手,请让我知道我做错了什么以及确切的解决方案。
谢谢
其实你已经用then
获取了秘值。如果依赖和配置没有问题,将返回该值。
getKeyVaultCredentials()
.then(getKeyVaultSecret)
.then(function (secret){
context.log(`Your secret value is: ${secret.value}.`);
return secret.value;})
.catch(function (err) {throw (err);});
但是你在使用这个sdk的时候会遇到一些问题,here是github的问题,供你参考。
建议您使用新的 Azure Key Vault SDK instead. It is more convenient to use. 是在 Azure 中使用 MSI 和 Key vault 的详细步骤功能。
您好,我正在 Azure 函数中编写一个 nodejs 代码来捕获保存在 Azure 密钥保管库中的用户名。 这是我写的代码
module.exports = async function (context, req) {
var msRestAzure = require('ms-rest-azure');
var KeyVault = require('azure-keyvault');
function getKeyVaultCredentials() {
return msRestAzure.loginWithAppServiceMSI({
resource: 'https://vault.azure.net/'
});
}
function getKeyVaultSecret(credentials) {
let keyVaultClient = new KeyVault.KeyVaultClient(credentials);
return keyVaultClient.getSecret('https://myDNS.vault.azure.net/', 'username', '');
}
const username = getKeyVaultCredentials()
.then(getKeyVaultSecret)
.then(function (secret){
context.log(`Your secret value is: ${secret.value}.`);
return secret.value;})
.catch(function (err) {throw (err);});
context.log(username)
context.res = {
body: username
};
}
我想获取用户名,但它给我的输出是
promise {pending}
如何等待函数结束以便提取用户名。
我是 nodejs 新手,请让我知道我做错了什么以及确切的解决方案。
谢谢
其实你已经用then
获取了秘值。如果依赖和配置没有问题,将返回该值。
getKeyVaultCredentials()
.then(getKeyVaultSecret)
.then(function (secret){
context.log(`Your secret value is: ${secret.value}.`);
return secret.value;})
.catch(function (err) {throw (err);});
但是你在使用这个sdk的时候会遇到一些问题,here是github的问题,供你参考。
建议您使用新的 Azure Key Vault SDK instead. It is more convenient to use.