К основному контенту

Gatsby + Strapi - управление данными в CMS


# Управление данными
Мы создали API и типы контента. По сути мы уже частично создали CMS - систему управления контентом. В данной статье рассмотрим некоторые возможности управления данными в нашем проекте. Ценность любой CMS заключается с том числе во взаимосвязях между различными типами контента. Настроим эти взаимосвязи, Strapi позволяет сделать это в несколько кликов.
В этом нам поможет плагин Content Type Builder, который использовался ранее. Откроем в нем тип контента Product. Он содержит три поля: name (string), description (text), price (float).
Построим логическую связь между "Product" и "Vendor", она будет заключаться в следующем: "Одному производителю может принадлежать множество товаров (Products)". Для этого необходимо выбрать на панели Content Type Builder тип данных Product, созданный нами ранее:
Добавляем новое поле типа Relation:
Настраиваем взаимосвязь:

Должно получиться "Vendor has many Products". Также надо заполнить поля, которые будут отвечать за построенную нами взаимосвязь в каждом из типов контента: вводим для Product "RelVendor", для Vendor "RelProduct". Жмём "Continue" и видим, что появилось новое поле. Дальше необходимо обязательно нажать Save, иначе новое поле не сохранится. Если Вы всё сделали правильно, то в типе контента Product должно появиться поле, которое я назвал RelVendor (связанный производитель):

Следующий шаг - создание экземпляров для каждого типа контента. Сначала создадим экземпляр Vendor:

Экземпляров Product еще не создано, поэтому пока оставляем поле RelProduct пустым. В разделе Vendors должен появиться созданный нами производитель:

По аналогии создадим несколько экземпляров Product: Стол, Стул, Шкаф и Кресло и присвоим им в поле RelVendor созданного нами производителя, а также произвольно заполнив остальные поля:

Кстати, если Вы посмотрите в карточку созданного производителя, то увидите связанные с ним экземпляры Products!
Таким образом, средствами UI мы можем удалять, редактировать и добавлять разные типы контента, очень быстро строить взаимосвязи между ними. Это самый простой пример, возможно построение более сложных типов контента и взаимосвязей.

Комментарии

Популярные сообщения из этого блога

Gatsby + Strapi - подготовка окружения для создания CMS #Часть 1

В этой и следующей статьях рассмотрим, как именно, в какой последовательности надо готовить окружение для написания CMS (системы управления контентом) с использованием перечисленных ниже технологий. Нам понадобится: Node.js Gatsby.js Strapi.js MongoDB (почему не Postgress или MySQL, поговорим позже). Что нам обещают? Gatsby обещает "невероятную скорость работы", Strapi обещает удобную систему создания разных видов контента и удобное управление ими. Ну что же, посмотрим. Будем проверять эту теорию, так сказать, на собственной шкуре. ПРИСТУПИМ: Установку "ингредиентов" лучше проводить в таком порядке: #Установка и настройка MongoDB Сначала ставим Монгу (она понадобится для Strapi.js). С ее установкой немного пришлось повозиться, так как я это делал впервые. Качаем  MongoDB  (надо выбрать Community Server). Запускаем установщик (msi) и ждём завершения установки. На что надо обратить внимание, так как этому не всегда уделяется внимание в мануал...

Strapi: проблемы #1, созданные своими руками

Перед тем как двигаться дальше, опишу проблему, неожиданно возникшую в результате следующего старта сервера - данные пользователя, которого мы создали в прошлый раз, не сохранились, при старте " strapi start " вместо авторизации предлагается форма создания нового пользователя. Пробуем создать нового пользователя - User2. После этого отключаем всё - MongoDB, NodeJS, перезагружаем компьютер; потом заново делаем старт всех необходимых приложений. И, о чудо, после всех манипуляций User2 сохранился, получается залогиниться. Следующий запуск показал, что сервер не запускается, выдает ошибку БД в консоли mongod.exe :   "Access control is not enabled for the database." mongo.exe : MongoDB shell version v3.6.3 connecting to: mongodb://127.0.0.1:27017 MongoDB server version: 3.6.3 Server has startup warnings: 2018-03-19T23:30:39.702-0700 I CONTROL  [initandlisten] 2018-03-19T23:30:39.702-0700 I CONTROL  [initandlisten] ** WARNING: Access control is no...