Как сохранить ответ HTTPS на глобальную переменную в узле

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

     _doRequest(postData) {
const hostName = XXXXXXXXXXXXXXX;
const path = '/api/transact.php';

postData.security_key = this.security_key;
postData = querystring.stringify(postData);

const options = {
  hostname: hostName,
  path: path,
  method: 'POST',
  headers: {
    'Content-Type': 'application/x-www-form-urlencoded',
    'Content-Length': Buffer.byteLength(postData)
  }
};

// Make request to Direct Post API
const req = https.request(options, (response) => {
  console.log(`STATUS: ${response.statusCode}`);
  console.log(`HEADERS: ${JSON.stringify(response.headers)}`);

  response.on('data', (chunk) => {
    console.log(`BODY: ${chunk}`);
  });
  response.on('end', () => {
    console.log('No more data in response.');
  });
});

req.on('error', (e) => {
  console.error(`Problem with request: ${e.message}`);
});

response.statusCode - это то, что я хочу как-то поднять и сохранить в глобальной переменной, такой как const status = statusCode, но я не могу понять, как это сделать. Буду признателен за любую помощь!


person TMG    schedule 19.05.2020    source источник


Ответы (1)


Попробуйте использовать global.status = statusCode. Вы всегда можете получить к нему доступ во время работы узла, однако это считается антипаттерном.

person E F    schedule 19.05.2020
comment
будет ли это использоваться в определении переменной? например const global.status = statusCode? - person TMG; 19.05.2020
comment
Нет, только без const. Вы определяете новый ключ status для объекта global. Так что просто global.status = statusCode; А позже вы можете, например, console.log(global.status); - person E F; 19.05.2020
comment
Добавляя этот код в запрос, он, похоже, не распознает его. - person TMG; 19.05.2020
comment
Вот обновленный код: const req = https.request(options, (response) => { console.log(STATUS: ${response.statusCode}); console.log(HEADERS: ${JSON.stringify(response.headers)}); global.status = statusCode; - person TMG; 19.05.2020
comment
Я также пытался использовать Object.assign, который тоже не работает. - person TMG; 19.05.2020
comment
К сожалению, все еще не повезло. - person TMG; 19.05.2020