В предисловии скажу, что я только начинаю первую фазу моего буткемпа по кодированию, поэтому я ни в коем случае не владею JavaScript. Я хотел бы поделиться своим пониманием запросов на исправление, публикацию и удаление, используемых в JavaScript для обновления базы данных. Код в этом блоге взят из проекта, над которым я работал вместе с моими коллегами: Маколистером Биспо и Брайантом Уиггинсом.
function donatedBook(event) { fetch("http://localhost:3000/books", { method: "POST", headers: { "Content-Type": "application/json", Accept: "application/json" }, body: JSON.stringify({ "title": event.target.title.value, "author": event.target.author.value, "copies": event.target.copies.value, "img_front": event.target.frontImage.value, }) }) .then(resp => resp.json()) .then(data => { renderBookBar(data); }) }
Почтовый запрос используется для добавления нового элемента в базу данных. Моя функция вызывается из прослушивателя событий отправки в форме. Событие передается в эту функцию для получения значений, введенных пользователем. URL-адрес в выборке будет указывать на размещенную базу данных. Заголовки необходимы для передачи контекста/метаданных информации, содержащейся в запросе. Тело — это элемент, который фактически добавляется в базу данных.
function checkoutBook(book) { let id = book.id; // console.log(book) if (parseInt(book.copies) > 1) { fetch(`http://localhost:3000/books/${id}`, { method: 'PATCH', headers: { "Content-Type": "application/json", Accept: "application/json" }, body: JSON.stringify({ "copies": `${parseInt(book.copies) - 1}` }) }) .then(resp => resp.json()) .then(data => { firstBookToCatalog(); catalogCopies.textContent = `Copies Available: ${parseInt(book.copies) - 1}` }) } else { fetch(`http://localhost:3000/books/${id}`, { method: 'DELETE', headers: { "Content-Type": "application/json", Accept: "application/json" } }) .then(resp => resp.json()) .then(data => { bookBar.innerHTML = ""; fetchBookBar(); firstBookToCatalog(); }) } }
Для моего проекта мы работали над созданием каталога книг. Эта функция включала как запросы на исправление, так и на удаление. При использовании исправления или удаления необходимо получить идентификатор изменяемого элемента, поскольку исправление и удаление работают с существующей информацией в базе данных. Для этой функции, если у книги есть несколько копий, доступных для извлечения, количество копий является единственным атрибутом, который необходимо изменить. Если у книги осталась только одна копия, книга будет удалена из базы данных целиком. URL-адреса в выборке должны указывать на конкретный элемент, который необходимо изменить. По этой причине в конце URL-адресов добавляется идентификатор книги. Заголовки не нужны для запросов на удаление, но я добавил их, чтобы попрактиковаться в вводе правильного сообщения, исправления или запроса на удаление. Все, что закодировано в .then(), будет выполняться после выборки. В моем проекте мне нужно было отобразить обновленную базу данных после выполнения выборки, чтобы отображаемая информация включала добавленные изменения.