Запрос API GET возвращает неопределенные значения в узле JS

#javascript #node.js #api #promise #get

Вопрос:

Я новичок в Node JS и все еще выясняю, как работают запросы API GET. Я пытаюсь вызвать запрос API GET с помощью узла Js, функция должна получать данные с серверов, а URL-адрес будет «url/книги?имя=», где «имя» будет передано функции из поля ввода. До сих пор у меня есть эта функция

 async function getBooksInfo(name) {
    
    const url = `https://test/books?name=${name}`;

     return new Promise(function (resolve, reject) {
        https.get(url, res => {
            res.setEncoding("utf8");
            let body = "";
            res.on("data", data => {
                body  = data;
            });
            res.on("end", () => {
                body = JSON.parse(body);
                resolve(body)
                                  
            });
             res.on("error", (e) => {
                reject(e);
            });
        });
    })
}

 

и еще одна функция создаст поток входных данных,

 async function storeInfo() {
const date = readLine().trim();
const result = await getBooksInfo(date);
const isEmpty = !Object.keys(result).length;
if (isEmpty) {
 ws.write('We don't have this book in our database');
  } else {
      ws.write(`Book Name: ${result.bookName}`);
      ws.write(`Year: ${result.year}n`)
  }
}

 

но по какой-то причине поток входных данных возвращается неопределенным, я, кажется, не понимаю, в чем может быть проблема. Мы высоко ценим любую помощь и предложения.

Обновлено: вот что такое консоль.журнал показывает

 {
  page: 1,
  per_page: 100,
  total_pages: 20,
  data: [
    {
      bookName: 'test',
      year: 1975,
      author: "test,
    }
  ]
}
 

Комментарии:

1. Может быть, API возвращает массив книг, а не только одну книгу?

2. Что это console.log(result) показывает?

3. @Barмар обновил мой пост с помощью консоли. данные журнала

4. result.data[0].bookName

5. Вам нужен else параметр, который разрешает другое значение по умолчанию.