Как правильно обновиться в CRUD-приложении

Я работаю над приложением CRUD, используя webpack в качестве сборщика модулей и json: server в качестве моделируемого бэкэнда. Все остальные операции работают отлично, но обновление заполняет поля как undefined. Итак, если пост выглядит следующим образом...

Post 1

content for post 1

Если я попытаюсь отредактировать его, он будет отображаться буквально как это...

Undefined

Undefined

Я не уверен, где я ошибаюсь, но я думаю, что это вопрос масштаба. Я либо неправильно ссылаюсь на что-то, либо мне нужно переосмыслить набор фигурных скобок. По крайней мере, я так думаю.

В моем файле http.js запрос на размещение находится в классе HTTP вместе со всеми остальными (отправить, поместить, удалить, получить)

...
    // Make an HTTP PUT Request
    async put(url, data) {
        const response = await fetch(url, {
            method: 'PUT',
            headers: {
                'Content-type': 'application.json'
            },
            body: JSON.stringify(data)
        });

        const resData = await response.json();
        return resData;
    }

...

Приведенный выше код экспортируется в файл app.js, который обрабатывает функцию отправки сообщения.

...
function submitPost() {
    const title = document.querySelector('#title').value;
    const body = document.querySelector('#body').value;
    const id = document.querySelector('#id').value;

    const data = {
        title,
        body
    }

    // Validate input
    if (title === '' || body === '') {
        ui.showAlert('Please fill in all fields', 'alert alert-danger');
    } else {
        // Check for ID
        if (id === '') {
            // Create Post
            http.post('http://localhost:3000/posts', data)
                .then(data => {
                    ui.showAlert('Post added', 'alert alert-success');
                    ui.clearFields();
                    getPosts();
                })
                .catch(err => console.info(err));
        } else {
            // Update Post
            http.put(`http://localhost:3000/posts/${ id }`, data)
                .then(data => {
                    ui.showAlert('Post updated', 'alert alert-success');
                    ui.changeFormState('add');
                    getPosts();
                })
                .catch(err => console.info(err));
        }

    }
}
...

Насколько я вижу, функции пользовательского интерфейса, импортированные из модуля пользовательского интерфейса, работают правильно. getPosts тоже работает, но если необходимо увидеть его или файл HTML, я буду рад предоставить его. Любая помощь будет принята с благодарностью.

Обновлено:

Обновленный файл json отображается так. Сообщение с идентификатором 2 когда-то имело такой же контент, как и сообщение после него.

...
"posts": [
    {
      "id": 2
    },
    {
      "id": 3,
      "title": "Post Three",
      "body": "This is post three."
    },
...

Можете ли вы объяснить, что должен передать ваш комментарий «нет предупреждений от веб-пакета»?

DDupont 15.06.2019 01:49

Это была ошибка. Я привык создавать такие фреймворки, как React и Django, где я уведомляюсь о таких ошибках и могу отследить их до источника проблемы. При создании этого приложения я надеюсь избавиться от своей зависимости от них. Часть обновлений CRUD была моей особой слабостью в течение некоторого времени, и я надеялся, что кто-нибудь может хотя бы дать мне совет о том, как отследить проблему или сказать, где я ошибаюсь. У Вас есть какие-то предложения?

Aaron Toliver 16.06.2019 22:07

Вы смотрели вызовы ajax из инструмента трассировки сети браузера, чтобы точно увидеть, что находится в PUT по сравнению с POST или GET? Было бы хорошо изолировать его от PUT, чтобы быть уверенным

DDupont 18.06.2019 15:39

По вашему предложению я сделал. Я также попробовал это на почтальоне. На почтальоне все в порядке, но, судя по тому, что я вижу в инструменте трассировки, что-то не так с запросом на размещение. Мы сужаем его.

Aaron Toliver 18.06.2019 19:09
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
4
57
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Благодаря @DDupont я смог найти, где я ошибся. Очень простая небрежная опечатка в заголовках HTTP-запроса PUT.

"Content-type": "application.json"

У меня там был период. Это должно было быть...

"Content-type": "application/json"

Все время прямо у нас под носом :) И люди недоумевают, почему программное обеспечение может занимать так много времени!

DDupont 19.06.2019 22:07

Другие вопросы по теме