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:

api/server.jsconst 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:

api/server.jsconst 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:

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

A następnie zaimportujmy do naszego pliku:

api/server.jsimport { 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ń:

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 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):

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

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:

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

Otwórz swoją aplikację ze studentami. Zapoznawszy się z materiałem z tej lekcji, napisz funkcję do tworzenia obiektu z danymi studenta.