⊗jsrxPmATDS 53 of 57 menu

Redux-daky thunk ulanyp iberilen POST haýyşyny işlemek

Biz siz bilen önümçilik we satyjylaryň maglumatlaryny serwerden aldyk we olary programmamyza çykardyk. Ýöne thunk diňe almak üçin däl, eýsem maglumat ibermek üçin hem ulanylyp bilner. Bunyň nähili edilýändigini öwreneliň.

Täze önüm goşanymyzdan soň, ol bizim store-da, ýagny programmamyzyň içinde galýar. Geliň, täze önümiň serwerde saklanýandygyny edeliň.

Geliň serwerden başlalyň. Bu ýerde biz artýk GET däl, POST haýyşyny işlemeli bolarys, sebäbi serwere indi önümiň maglumatlary gelýär we biz olary şol ýerde saklarys.

Önümçilikli programmanymyzy, we onuň içindäki server.js faýlyny açalyň. Onda handlers massiwini tapalyň we oňa POST haýyşy üçin ýene bir işleýji goşalyň. Bu ýerde biz haýyşyň bedenini hem kabul etmeli bolarys, şonuň üçin callback içine request geçirmeli:

http.post('/fakeServer/products', async ({ request }) => {})

Indi ýaýly möýşümlerde callback-iň kodyny ýazalyň. Ilki bilen haýyş maglumatlaryny çykaryň we ýalňyşlyk ýüze çykanda serwerden jogaby biz maglumatlary saklap bilmedik we 500 statusy bilen iberiň:

http.post('/fakeServer/products', async ({ request }) => { const data = await request.json() if (data.content === 'error') { await delay(ARTIFICIAL_DELAY_MS) return new HttpResponse('serwer saklamak ýalňyşlygy', { status: 500, headers: { 'Content-Type': 'application/json', }, }) } })

Eger maglumatlar bilen hemme zat gowy bolsa, onda maglumat bazasynda bize haýyşda gelen id boýunça satyjyny taparys we bu satyjyny data-a ýazarys (satyjynyň maglumatlary hem şol serwerde saklanýar ;) ):

const seller = db.seller.findFirst({ where: { id: { equals: data.seller } }, }) data.seller = seller

Soňra maglumat bazasynda bu önüm üçin reaksiýalar bilen obýekti dörediň. Indi, önüm üçin gerekli bolan ähli meýdanlara eýe bolanymyzda, bazada özümi önümi dörediň:

data.reactions = db.reaction.create() const product = db.product.create(data)

Gijä galdyrmany goýuň we callback-iň kody üçin iň soňky setirde önüm bilen jogaby gaýtaryň:

await delay(ARTIFICIAL_DELAY_MS) return HttpResponse.json(serializeProduct(product))

Bu bilen biz serwer bilen doly gutardyk we ýene-de oňa gaýdyp gelmeris.

Haýsam, ýene bir peýdaly zat. Şu setirden soň export const worker = setupWorker(...handlers) aşakdaky kody goşup bilersiňiz:

worker.listHandlers().forEach((handler) => { console.log(handler.info.header) })

Indi siz brauzeriň konsolunda her bir işleýjiniň işleýş netijesini görip bilersiňiz.

Elbetde, bizim serwerimiz hakyky däl we eger biz brauzerde sahypany mejburýetlendirilen täzeden ýüklänimizde, onda bizim täze önüm obýektlerimiz ýogolar.

Studentler bilen programmanyzy açyň. Onda server.js faýlyny açyň. handlers massiwinä POST haýyşyny işlemegi goşuň. Bu haýyşyň bedeninde siz täze goşulan studentiň maglumatlaryny kabul edersiňiz.

http.post üçin callback-iň bedeninde maglumatlary çykaryň we ýalňyşlyk ýüze çykanda degişli jogaby iberiň.

Eger hemme zat gowy bolsa, onda maglumat bazasynda alnan id boýunça mugallymy tapyň we ony maglumatlara ýazyň. Şeýle hem maglumatlara, maglumat bazasy esas düzülen votes obýektini hem ýazyň.

Ýygnan maglumatlar boýunça täze student bilen student obýektini dörediň we ony serweriň jogabyna iberiň.

Türkmen
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkçeЎзбекOʻzbekTiếng Việt
Biz sahypanyň işlemegi, analitika we şahsyýetleşdirmek üçin cookie ulanýarys. Maglumatlaryň işlenişi Gizlinlik syýasaty boýunça amala aşyrylýar.
hemmesini kabul et sazlamak ret et