#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
.