Vytvoření objektu s daty produktu v Reduxu

Funkci pro vytvoření objektu s prodejcem máme, přejděme k produktu. Vytvoření tohoto objektu bude o něco složitější, protože obsahuje více datových polí. Pojďme na to.

Pojďme otevřít naši aplikaci s produkty, a v ní soubor server.js. Níže pod funkcí getRandInt napíšeme naši funkci createProductData:

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

Nyní nastavíme potřebné vlastnosti. Hodnoty pro name, price a amount vygenerujeme pomocí getRandInt, kterou jsme napsali v minulé lekci:

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

A pro vygenerování popisu využijeme ještě jednu užitečnou věc. Je to knihovna faker, která umožňuje generovat falešná jména, adresy, e-maily, názvy ulic, texty atd. v různých jazycích. Pojďme v terminálu zadat následující příkaz a nainstalovat tuto knihovnu pro naši aplikaci:

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

A poté importujeme do našeho souboru:

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

Pojďme využít generování vět obsahujících známý text "Lorem ipsum". Ať popis obsahuje od 3 do 5 takových vět:

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

Nyní přidáme do našeho objektu pole s reakcemi, hodnotou mu předáme, vygenerovaný na místě příkazem create, objekt (reakce zatím v něm budou 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 jako poslední vlastnost přidáme již vygenerovaný objekt prodejce, který musíme předat jako parametr funkci createProductData. Takto vypadá úplný kód funkce pro vytvoření 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

Otevřete vaši aplikaci se studenty. Po seznámení s materiálem této lekce napište funkci pro vytvoření objektu s daty studenta.