Я создаю приложение реагирования, которое ищет книгу по названию и возвращает результаты.
В основном это работает нормально, но при поиске некоторых названий (например, "привет") оно не может получитьрезультаты, потому что параметры отсутствуют.
Специально, значение "сумма" отсутствует, и это может принести мне электронные книги, которые не продаются, даже если я добавлю параметр filter=paid-ebooks
при получении API.Использование projection=full
также не помогает.
Например, когда я вызываю API с помощью
https://www.googleapis.com/books/v1/volumes?printType=books&filter=paid-ebooks&key=${APIKEY}
и использую извлеченные данные из массива books в реакции.:
this.props.books.map((book, index) => {
return (
<CardItem
key={index}
title={book.volumeInfo.title}
authors={book.volumeInfo.authors ?
book.volumeInfo.authors.join(', ') :
"Not provided"}
price={book.saleInfo.listPrice.amount}
publisher={book.volumeInfo.publisher}
addToCart={() =>
this.props.addItem(this.props.books[index])}
/>
)
})
Один из результатов, который он получает, выглядит следующим образом:
"saleInfo": {
"country": "TR",
"saleability": "NOT_FOR_SALE",
"isEbook": false
}
Хотя это и должно быть примерно так:
"saleInfo": {
"country": "TR",
"saleability": "FOR_SALE",
"isEbook": true,
"listPrice": {
"amount": 17.23,
"currencyCode": "TRY"
}
И попыткапоиск с этим ответом API выдает ошибку:
TypeError: Cannot read property 'amount' of undefined
price={book.saleInfo.listPrice.amount}
Как видно из кода реакции authors
, эта проблема также связана с параметром авторов, который я обошел, как видно из кода.Но я не могу сделать то же самое с amount
.Это известная ошибка в API Книг Google или есть способ предотвратить это?Я не понимаю, почему он все еще возвращает мне электронные книги, которые не продаются даже с filter=paid-ebooks
param.