Я хочу обновить рейтинги книг. Пользователь отправит рейтинг для конкретной книги через форму. postRatings — это создатель действий, который отправляется компоненту с формой. Книги переменная содержит тот же объект книги, что и в файле json. Рейтинг обновляется для конкретной книги в переменной Books, а затем я хочу удалить старый объект и поместить этот обновленный объект. Но когда я пытаюсь это сделать, я получаю сообщение об ошибке 404: Not Found. Было бы здорово, если бы кто-нибудь мог указать, где я ошибаюсь, и помочь мне решить эту ошибку.
Файл JSON (Fake Rest API, созданный с использованием модуля узла json-server):
{
"books": [
{
"id": "0",
"title": "1984",
"author": "George Orwell",
"rating": "4.6",
"points: "228",
"total": "50
},
{
"id": "1",
"title": "To Kill a Mockingbird",
"author": "Harper Lee",
"rating": "4.8",
"points: "241",
"total": "50
}
]
}
Создатель действий postRatings:
export const postRatings = (Books, title, rating) => (dispatch) => {
Books.some(function(obj){
if (obj.title==title) {
obj.total = parseInt(obj.total)+1;
let newPts = parseInt(obj.points) + parseInt(rating);
obj.points = ""+newPts;
let newRating = (parseInt(obj.points) + parseInt(rating)) / parseFloat(obj.total);
obj.ratings = ""+Math.floor(newRating * Math.pow(10, 1)) / Math.pow(10, 1).toFixed(1);
return true;
}
});
fetch('localhost:3001/books', {
method: 'PUT',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(Books)
})
.then(response => {
if (response.ok) {
return response;
} else {
var error = new Error('Error- ' + response.status + ":" + response.statusText);
error.response = response;
throw error;
}
},
error => {
var errmess = new Error(error.message);
throw errmess;
})
.then(response => response.json())
.then(response => {console.info("response:"+JSON.stringify(response)); alert("Rating Added!")})
.catch(error => {console.info('Error Message: '+ error.message)
alert("Some Problem Occurred.\nError: "+error.message);
});
}



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы должны указать идентификатор объекта, который хотите обновить. см. маршрут json-сервера по умолчанию
поэтому в URL-адресе выборки добавьте идентификатор книги в конце маршрута.
fetch(`localhost:3001/books/${Books.id}`)
@KevalDhanani Пожалуйста. Рад, что смог помочь
Ах! это решило проблему. Я пытался обновить весь объект книги, а не конкретную книгу. Я тоже пропустил несколько маршрутов для PUT. Спасибо, что выручили меня :-)