В предисловии скажу, что я только начинаю первую фазу моего буткемпа по кодированию, поэтому я ни в коем случае не владею 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(), будет выполняться после выборки. В моем проекте мне нужно было отобразить обновленную базу данных после выполнения выборки, чтобы отображаемая информация включала добавленные изменения.