1. Опишите данные без сервера
Составьте каталог из трёх книг: название, авторы, теги, год. Представьте его массивом объектов JavaScript. Отфильтруйте книги по тегу и выведите названия через map. Затем сериализуйте каталог с JSON.stringify и проверьте результат в JSON-мастерской.
Обратите внимание на границу: JSON не хранит функции, undefined и ссылки между объектами. Даты передавайте в явно выбранном строковом формате, а точные длинные идентификаторы — строками.
Для синтаксиса функций, объектов, модулей и Promise используйте MDN JavaScript Guide.
2. Проследите запрос до ответа
В руководстве Express изучите порядок middleware и маршрутов. Оно описывает Express 2; для нового приложения выберите поддерживаемую версию по действующей документации Express.
Реализуйте два маршрута: GET /books возвращает JSON, а GET /books/:id — одну книгу. Заранее решите, как отличить неверный идентификатор от отсутствующей записи. Добавьте обработчик 404 после маршрутов и отдельный обработчик ошибок. Не возвращайте пользователю стек исключения или секреты подключения.
При переносе старого проекта не меняйте пакет вслепую: пройдите официальные миграционные руководства, проверьте сигнатуры ответов и синтаксис путей. Проверьте успешный запрос, пустой каталог, неизвестный адрес и искусственную ошибку.
3. Отделите представление от данных
Jade показывает, как отступы и вложенность превращаются в HTML. Для новой работы сопоставляйте старые примеры с документацией Pug.
Сделайте карточку книги с заголовком и списком тегов. Подставьте название <script>alert(1)</script> и убедитесь, что оно отображается как текст. Экранирование защищает контекст HTML; для URL, JSON внутри script и CSS нужны отдельные правила, а не отключение экранирования.
4. Выберите форму документа по запросам
В главе о моделировании сравните вложенный объект и ссылку на другой документ. Перед выбором запишите: что читается вместе, что обновляется независимо, как растёт массив и как ограничен размер документа.
Добавьте индекс только под конкретную выборку. Сравните план и число просмотренных документов до и после, используя действующий MongoDB Manual. Отдельно проверьте права подключения и ограничения сетевого доступа; учебную базу не открывайте в интернет.
5. Сведите приложение в проверяемый результат
Сохраните версию runtime и lockfile. Сборку запускайте из чистой установки зависимостей. Проверьте HTTP-статусы, тип содержимого, экранирование, пустые состояния и мобильную страницу с длинным названием.
Для модульной сборки сначала объясните себе граф зависимостей. Инструмент может измениться; связь «входной модуль → используемые зависимости → результат» остаётся полезной моделью.