Vytvorenie objektu s údajmi produktu v Reduxe

Funkciu na vytvorenie objektu s predajcom už máme, prejdime k produktu. Vytvorenie tohto objektu bude o čosi zložitejšie, pretože obsahuje viac polí s údajmi. Poďme na to.

Otvorme našu aplikáciu s produktmi, a v nej súbor server.js. Nižšie po funkcii getRandInt napíšme našu funkciu createProductData:

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

Teraz zadefinujme potrebné vlastnosti. Hodnoty pre name, price a amount vygenerujeme pomocou getRandInt, ktorú sme napísali v minulej lekcii:

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

A na vygenerovanie opisu použijeme ďalšiu užitočnú vec. Je to knižnica faker, ktorá umožňuje generovať falošné mená, adresy, e-maily, názvy ulíc, texty atď. v rôznych jazykoch. Zadajme do terminálu nasledujúci príkaz a nainštalujme túto knižnicu pre našu aplikáciu:

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

A potom ju importujme do nášho súboru:

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

Využime v nej generovanie viet, ktoré obsahujú známy text-"rybu" 'Lorem ipsum'. Nech opis obsahuje od 3 do 5 takýchto viet:

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

Teraz pridajme do nášho objektu pole s reakciami, hodnotou mu priradíme, vygenerovaný na mieste príkazom create, objekt (reakcie zatiaľ v ňom budú po 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(),
  }
}

A ako poslednú vlastnosť pridajme už vygenerovaný objekt predajcu, ktorý musíme nevyhnutne odovzdať parametrom do funkcie createProductData. Takto vyzerá úplný kód funkcie na vytvorenie objektu produktu:

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

Otvorte svoju aplikáciu so študentmi. Po oboznámení sa s materiálom tejto lekcie napíšte funkciu na vytvorenie objektu s údajmi študenta.