javascript - 如何在编译时从缓存参数中延迟“新功能”,等到它被使用
问题描述
我正在尝试启动一个红移客户端。但是,当我尝试加载我首先从 AWS Secret Manager 接收的环境变量时,它似乎加载了以下代码/缓存了以下连接参数,这会导致错误,因为一切都是“未定义的”。
const client = {
user: process.env.user,
password: process.env.pass,
database: process.env.db,
port: process.env.port,
host: process.env.host
};
const redshiftClient = new redshift(client, {rawConnection: false})
加载机密后,我在同一脚本中使用函数调用 redshiftClient:
retrieveData() {
return redshiftClient.query(`SELECT *
FROM cit.rules`,
{raw: true}, function(err, data){
if(err) console.error(err);
else {
return data;
}
});
}
我不确定为什么在请求完成之前立即调用/缓存它。这不应该只发生在我第一次调用 redshiftClient 之后吗?我可以做些什么来确保我的环境变量已经从 secretmanager 加载并且我仍然可以访问 redshiftClient.query?
解决方案
我想到了。由于它正在创建一个新对象,因此我可以在调用它之前通过执行以下操作来编辑密码值:
redshiftClient.config.password = process.env.pass;
通过使用 console.log 显示 redshiftClient 对象的内容,然后查看密码的存储位置,我得到了这个答案。
这会在调用我的查询之前更新值。我确信有更好的方法可以做到这一点,但这是我能够找到的解决方法。
推荐阅读
- php - 使用“zlib.output_compression=On”时如何禁用在输出中添加“Vary: Accept-Encoding”?
- php - 带有前缀和严格模式配置的会话和 session_create_id() 设置为 on
- r - 如何更改特定线条的粗细和/或在多线图中添加形状?
- php - 使用来自另一个查询的关联的 PHP 查询
- python - Colab 中的交互式图表
- ios - 如何从一个 viewController 添加多个 segue
- c# - c# 没有引用类型的结构
- java - 测试方法返回特定对象junit
- javascript - 使用 angular-cli 构建/示意图的摇树 CSS
- python - Python/数学素数查询