Создание записей в базе данных в Redux

На прошлых занятиях мы подготовили все, чтобы заполнить нашу базу данными. Давайте приступим.

Давайте откроем наше приложение с продуктами, а в нем файл server.js. Сначала мы определимся сколько и каких объектов с данными нам нужно. Продавцов у нас 4, пусть на каждого из них приходится по 3 продукта. Введем для этого две константы сразу после строчек с импортом:

api/server.jsconst NUM_SELLERS = 4
const PRODS_PER_SELLER = 3

Теперь в конце файла перед экспортом воркера сделаем цикл for, в котором мы с помощью create создадим записи в базе данных для наших 4 продавцов:

api/server.jsfor (let i = 0; i < NUM_SELLERS; i++) {
  const newSeller = db.seller.create(createSellerData(i))
}

На каждого продавца у нас приходится 3 продукта поэтому мы в цикле для продавцов сделаем еще один вложенный for, в котором будем создавать записи для продуктов:

api/server.jsfor (let i = 0; i < NUM_SELLERS; i++) {
  const newSeller = db.seller.create(createSellerData(i))

  for (let j = 0; j < PRODS_PER_SELLER; j++) {
    const newProduct = createProductData(newSeller)
    db.product.create(newProduct)
  }
}

Отлично! На этом мы закончили работу с базой данных.

Нам осталось только сделать еще одну вещь. Нам нужно, чтобы в объекте с продуктом в поле seller передавался id продавца. Давайте ниже после циклов for напишем еще одну функцию serializeProduct, в которой мы будем добавлять этот id:

api/server.jsconst serializeProduct = (product) => ({
  ...product,
  seller: product.seller.id,
})
Задание 1

Откройте ваше приложение со студентами. Пусть у вас будет три преподавателя, а на каждого из них приходится 3 студента. Ознакомившись с материалом этого урока, воспользуйтесь циклом for и создайте в базе данных 3 записи с преподавателями.

Задание 2

Далее сделайте второй цикл for внутри цикла из предыдущей задачи, с помощью которого создайте 3 студентов.

Задание 3

После вложенных циклов for напишите функцию serializeStudent, как показано в уроке, которая будет вносить в поле teacher id преподавателя.