Стварэнне аб'екта з данымі прадукту ў Redux

Функцыя для стварэння аб'екта з прадаўцом у нас ёсць, пераходзім да прадукту. Стварэнне гэтага аб'екта будзе крыху складаней, паколькі ён змяшчае больш палей з данымі. Прыступім.

Давайте адкрыем наша прыкладанне з прадуктамі, а ў ім файл server.js. Ніжэй пасля функцыі getRandInt напішам нашу функцыю createProductData:

api/server.jsconst createProductData = () => {}

Цяпер прапішам патрэбныя нам уласцівасці. Значэнні для name, price і amount мы згенеруем пры дапамозе getRandInt, якую мы напісалі на мінулым уроку:

api/server.jsconst createProductData = () => {
  return {
    name: `Product${getRandInt(0, 100)}`,
    price: getRandInt(100, 2000),
    amount: getRandInt(1, 50),
  }
}

А для таго, каб згенераваць апісанне, мы скарыстаемся яшчэ адной карыснай рэччу. Гэта бібліятэка faker, якая дазваляе генераваць фэйковыя імёны, адрасы, мэйлы, назвы вуліц, тэксты і інш. на розных мовах. Давайте ўвядзем у тэрмінале наступны радок і ўсталюем гэтую бібліятэчку для нашага прыкладання:

terminalnpm install @faker-js/faker --save-dev

А затым імпартуем у наш файл:

api/server.jsimport { faker } from '@faker-js/faker'

Давайте скарыстаемся ў ёй генерацыяй прапананняў, якія змяшчаюць агульнавядомы тэкст-"рыбу" 'Lorem ipsum'. Хай апісанне змяшчае ад 3 да 5 такiх прапананняў:

api/server.jsconst createProductData = () => {
  return {
    name: `Product${getRandInt(0, 100)}`,
    desc: faker.lorem.sentences({ min: 3, max: 5 }),
    price: getRandInt(100, 2000),
    amount: getRandInt(1, 50),
  }
}

Цяпер дадамо ў наш аб'ект поле з рэакцыямі, значэннем яму мы перададзім, згенераваны на месцы камандай create, аб'ект (рэакцыі пакуль у ім будуць па 0):

api/server.jsconst createProductData = () => {
  return {
    name: `Product${getRandInt(0, 100)}`,
    desc: faker.lorem.sentences({ min: 3, max: 5 }),
    price: getRandInt(100, 2000),
    amount: getRandInt(1, 50),
    reactions: db.reaction.create(),
  }
}

І апошняй уласцівасцю дадамо ўжо згенераваны аб'ект прадаўца, які мы абавязкова павінны перадаць параметрам у функцыю createProductData. Вось так выглядае поўны код функцыі стварэння аб'екта прадукту:

api/server.jsconst createProductData = (seller) => {
  return {
    name: `Product${getRandInt(0, 100)}`,
    desc: faker.lorem.sentences({ min: 3, max: 5 }),
    price: getRandInt(100, 2000),
    amount: getRandInt(1, 50),
    reactions: db.reaction.create(),
    seller,
  }
}
Задание 1

Адкрыйце ваша прыкладанне са студэнтамі. Азнаёміўшыся з матэрыялам гэтага ўрока, напішыце функцыю для стварэння аб'екта з данымі студэнта.