Креирање објекта са подацима о производу у 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 таквих реченица:

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(),
  }
}

И као последње својство додаћемо већ генерисан објекат продавца, који mорамо обавезно проследити као параметар функцији 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

Отворите вашу апликацију са студентима. Упознавши се са материјалом ове лекције, напишите функцију за креирање објекта са подацима о студенту.