@turdubekov
Студент

Как сделать условие в Node?

Всем привет!
Обычно пишу только на Java, но тут попался наследный проект от уволенного фронтендера.
Проблема в том, что я вообще в жизни не трогал JS-образные языки.
Суть вопроса: есть API, в которую надо стучаться асинхронно; и полученные данные записывать в ArrayList (извините за тавтологию, не знаю как это будет на языке JS).
Мне надо, чтобы, если от первого API я получил следующее тело:
{
    "result": false,
    "requisite": "",
    "amount": 0,
    "created": null,
    "suip": null
}

...то тогда отправить запрос на второй API, плюс уже полученные данные записать обратно в лист объектов.
Как можно это перенести в код?
Имеющийся код:
async requestToSuip(suip: string,) {
    const exampleData = {
      result: false,
      requisite: "",
      amount: 0,
      created: null,
      suip: null
    };
    const {data} = await axios.get<SuipApiResponse | null | undefined>("http://api-1/sber/cashout/suip/" + suip)
    // если дата возврашает exampleData то по num_oper надо вызвать http://api-2/sber/cashout/txnid/ + num_oper 
    //результаты обоих эндпоитов должны быть в одном листе     
    return data || exampleData;
  }
  • Вопрос задан
  • 144 просмотра
Решения вопроса 1
sergiks
@sergiks Куратор тега JavaScript
♬♬
async requestToSuip(suip, num_oper = '') {
  const exampleData = {
    result: false,
    requisite: "",
    amount: 0,
    created: null,
    suip: null
  };

  const url1 = "http://api-1/sber/cashout/suip/" + suip;
  const url2 = "http://api-2/sber/cashout/txnid/" + num_oper;

  const {data: data1} = await axios.get(url1);
  const isEqual = Object.keys(exampleData)
    .every(prop => exampleData[prop] === data1[prop]);
  if (isEqual === false) {
    return data1;
  }
  
  const {data: data2} = await axios.get(url2);

  return {
    ...data1,
    ...data2, // поля из data2 перезапишут такие же из data1
  };
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы