Загрузка данных из API в файл, а затем их импорт

#node.js #api

Вопрос:

Я хочу загрузить некоторые учетные данные из API приложения в Node.js приложение, а затем использовать их при необходимости.

В настоящее время существует файл, в котором хранится некоторая информация, который получает доступ к учетным данным непосредственно из переменных среды и экспортирует все. Этот файл затем импортируется при необходимости, что-то вроде этого:

creds.js

 module.exports = {
    key: process.env.KEY || diqndwqn,
    id: process.env.ID || dqw2231qzaxc,
    db: {
        user: dqdwmkovvoij,
        pw: ofo9v8#$w
    }

}
 

Я хочу выполнить вызов API, из которого я получаю эти значения, где значения все еще могут быть импортированы после, но вызов выполняется только один раз в начале. Решение, которое я могу себе представить, — это сделать что-то вроде синглтона, в котором вы выполняете вызов API только в первый раз. Я знаю, что также мог бы экспортировать обещание, но я не хочу запрашивать учетные данные несколько раз, только один раз при запуске сервера. Есть какие-нибудь чистые альтернативы?

Ответ №1:

Вы можете создать простой класс с функцией populate() и геттерами и экспортировать его в виде одного элемента.

 class MyCreds {
  constructor() {
    this.key = null;
    this.id = null;
    this.db = { user: null, pw: null }
  }
  async populate() {
    let creds = await whatever();
    this.key = cred.key;
    this.id = creds.id;
    this.db.user = creds.user;
    this.db.pw = creds.pw;
  }
}

const myCreds = new MyCreds();
module.exports = myCreds;
 

Затем в самом начале вашего процесса вы заполняете await require('my-creds').populate() и получаете доступ ко всему остальному так же, как и в настоящее время require('my-creds').id .