【发布时间】:2022-11-10 17:39:58
【问题描述】:
我正在使用 Nestjs 和 Prisma 开发一个项目,连接到 Postgres 数据库。而且我必须使用 aws Secrets 服务建立连接 url。问题是我正在使用 Typescript,而 AWS 没有提供示例代码。这就是为什么我找到以下代码来获取秘密的原因
export async function getSecret(): Promise<string> {
var AWS = require('aws-sdk'),
region = "region",
secretName = "secret",
secret,
decodedBinarySecret;
// Create a Secrets Manager client
var client = await new AWS.SecretsManager({
region: region
});
return new Promise((resolve, reject) => {
client.getSecretValue({ SecretId: secretName }, (err, data) => {
if (err) {
console.log(JSON.stringify(err))
reject(err)
return
}
if ('SecretString' in data) {
resolve(data.SecretString as string)
} else {
resolve(Buffer.from(data.SecretBinary as any, 'base64').toString('ascii'))
}
})
})
}
现在即使我尝试解决它返回的承诺,就像代码不会停止并等待承诺解决。我不知道该怎么做,因为我只收到 Promise
async function takeSecrets() {
const url = await getSecret()
const result : string=url
console.log(result)
return result
}
async function makeURL(){
let url:any=''
takeSecrets().then(resp=>{
const secret=JSON.parse(resp)
url = `${secret.engine}://${secret.username}:${secret.password}@${secret.host}:${secret.port}/database?schema=public`
}).catch(err=>{
console.log(err)
})
console.log(url)
return url
}
即使做了所有这些我仍然收到承诺并且你需要一个字符串到 url 路由
【问题讨论】:
-
How do I ask a good question?:"不要发布代码、数据、错误消息等的图像。- 将文本复制或输入到问题中。请保留将图像用于图表或演示渲染错误,这些无法通过文本准确描述的事情。”
-
感谢您的建议,我已经进行了更改以使其成为更好的帖子
标签: typescript async-await nestjs es6-promise prisma