【问题标题】:asnyc function for retrieving Google Secret Manager Variable returns promise pending用于检索 Google Secret Manager 变量的异步函数返回待处理的承诺
【发布时间】:2021-03-20 01:30:29
【问题描述】:

我正在尝试将环境变量切换到 Google Secrets Manager,但遇到了问题。我正在运行一个 expressjs api 试图建立一个数据库连接。但无论我尝试什么,它只返回Promise { <pending> },而不是等待异步函数完成。非常感谢任何帮助!

gcloud.js

const { SecretManagerServiceClient } = require('@google-cloud/secret-manager');
const client = new SecretManagerServiceClient();

async function getSecret(name) {

const name = `projects/PROJECT-ID/secrets/${name}/versions/latest`;

const [version] = await client.accessSecretVersion({
  name: name,
});

const payload = version.payload.data.toString();

return payload;
}

module.exports.getSecret = getSecret;

config.js

const gcloud = require('./config/gcloud.js')

const config = {
  authSecret: gcloud.getSecret(SECRET_NAME)
}

module.exports = config

【问题讨论】:

    标签: javascript express async-await google-secret-manager


    【解决方案1】:

    你需要awaitgcloud.getSecret的结果:

    // Not actually valid
    const config = {
      authSecret: await gcloud.getSecret(SECRET_NAME)
    }
    

    但是,顶级 await 尚未得到广泛支持,因此您需要在函数中构建配置:NodeJS Async / Await - Build configuration file with API call

    【讨论】:

    • 我尝试“等待” gloud.getSecret 的结果 - 但它并没有改变结果。
    • 对,那是因为顶级 await 没有得到广泛支持。请参阅我发布的其他链接。
    • 我似乎无法让它工作......你能给我一个代码示例吗?
    猜你喜欢
    • 1970-01-01
    • 2021-01-02
    • 2022-11-01
    • 2019-07-20
    • 1970-01-01
    • 2022-01-26
    • 1970-01-01
    • 2020-12-18
    • 1970-01-01
    相关资源
    最近更新 更多