Reduxда маҳсулот маълумотлари билан объект яратиш

Сотувчи билан объект яратиш учун функция бизда бор, энди маҳсулотга ўтамиз. Бущ объектни яратиш бир аз мураккаброқ бўлади, чунки унда кўпроқ маълумотлар майдонлари мавжуд. Бошлаймиз.

Келгила, маҳсулотларимиз билан илованимизни ochамиз, ва ундаги server.js файлини ochамиз. 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(),
  }
}

Ва охирги хусусият сифатида биз аллақачон яратилган сотувчи объектини қўшамиз, уни биз албатта 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

Талабаларингиз билан иловангизни ochинг. Бущ дарс материаллари билан танишиб чиққанингиздан сўнг, талаба маълумотлари билан объект яратиш учун функция ёзинг.