#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
параметр, который разрешает другое значение по умолчанию.