Tworzenie obiektu z danymi produktu w Redux
Funkcję do tworzenia obiektu ze sprzedawcą mamy już, przejdźmy do produktu. Tworzenie tego obiektu będzie trochę bardziej skomplikowane, ponieważ zawiera więcej pól z danymi. Zabierzmy się do pracy.
Otwórzmy naszą aplikację z produktami,
a w niej plik server.js. Poniżej po
funkcji getRandInt napiszmy naszą funkcję
createProductData:
const createProductData = () => {}
Teraz wypiszmy potrzebne nam właściwości. Wartości
dla name, price i amount
wygenerujemy za pomocą getRandInt,
którą napisaliśmy na poprzedniej lekcji:
const createProductData = () => {
return {
name: `Product${getRandInt(0, 100)}`,
price: getRandInt(100, 2000),
amount: getRandInt(1, 50),
}
}
Aby wygenerować opis, skorzystamy z jeszcze jednej przydatnej rzeczy. Jest to biblioteka faker, która umożliwia generowanie fałszywych imion, adresów, e-maili, nazw ulic, tekstów itp. w różnych językach. Wprowadźmy w terminalu następującą linię i zainstalujmy tę biblioteczkę dla naszej aplikacji:
npm install @faker-js/faker --save-dev
A następnie zaimportujmy do naszego pliku:
import { faker } from '@faker-js/faker'
Skorzystajmy z generowania
zdań zawierających dobrze znany
tekst-"wypełniacz" 'Lorem ipsum'. Niech
opis zawiera od 3 do 5
takich zdań:
const createProductData = () => {
return {
name: `Product${getRandInt(0, 100)}`,
desc: faker.lorem.sentences({ min: 3, max: 5 }),
price: getRandInt(100, 2000),
amount: getRandInt(1, 50),
}
}
Teraz dodajmy do naszego obiektu pole z reakcjami,
jego wartością przekażemy, wygenerowany
miejsce komendą create, obiekt (reakcje
na razie będą w nim po 0):
const 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(),
}
}
I jako ostatnią właściwość dodajmy już
wygenerowany obiekt sprzedawcy, który
musimy koniecznie przekazać parametrem
do funkcji createProductData. Tak
wygląda pełny kod funkcji tworzenia obiektu
produktu:
const 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,
}
}
Otwórz swoją aplikację ze studentami. Zapoznawszy się z materiałem z tej lekcji, napisz funkcję do tworzenia obiektu z danymi studenta.