Как отложить «новую функцию» из параметров кэширования при компиляции, дождаться ее использования - PullRequest
0 голосов
/ 12 февраля 2019

Я пытаюсь запустить клиента красного смещения .Однако, когда я пытаюсь загрузить переменные среды, которые я получаю сначала из 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?

1 Ответ

0 голосов
/ 12 февраля 2019

Я понял это.Так как он создает новый объект, я смог отредактировать значение пароля перед его вызовом, выполнив следующее:

redshiftClient.config.password = process.env.pass;

Я получил этот ответ, показав содержимое redshiftClientобъект с console.log, а затем увидеть, где хранился пароль.

Это обновляет значение перед вызовом моего запроса.Я уверен, что есть лучший способ сделать это, но это обходной путь, который я смог найти.

...