⊗jsrxPmATDS 53 of 57 menu

POST kérés feldolgozása thunk használatával Redux-ban

Megkaptuk a termékek és eladók adatait a szerverről és megjelenítettük azokat az alkalmazásban. De a thunk segítségével nem csak adatokat lehet fogadni, hanem adatokat is küldeni. Nézzük meg, hogyan tehetjük ezt meg.

Miután hozzáadunk egy új terméket, az megmarad a store-ban, azaz a alkalmazásunkon belül. Tegyük úgy, hogy az új termék a szerveren is megmaradjon.

Kezdjük a szerverrel. Itt most nem GET, hanem POST kérést kell feldolgoznunk, mivel a szerverre most a termék adatai érkeznek, amelyeket ott fogunk tárolni.

Nyissuk meg a termékek alkalmazásunkat, és benne a server.js fájlt. Keressük meg benne a handlers tömböt és adjunk hozzá még egy kezelőt a POST kéréshez. Itt most a kérés testét is fogadjuk, ezért a callback-ben át kell adnunk a request-ot:

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

Most írjuk meg a callbackünk kódját a kapcsos zárójelek között. Először nyerjük ki az adatokat a kérésből és hiba esetén küldjünk a szerverről választ, hogy nem sikerült menteni az adatokat és 500 státuszt:

http.post('/fakeServer/products', async ({ request }) => { const data = await request.json() if (data.content === 'error') { await delay(ARTIFICIAL_DELAY_MS) return new HttpResponse('server save error', { status: 500, headers: { 'Content-Type': 'application/json', }, }) } })

Ha minden rendben van az adatokkal, akkor az adatbázisban megkeressük az eladót az id alapján, amelyik bejött a kérésben és beírjuk ezt az eladót a data-ba (az eladó adatai ugyanis nálunk is a szerveren tárolódnak ;) ):

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

Ezután az adatbázisban létrehozunk ehhez a termékhez egy objektumot reakciókkal. És most, miután megvannak a termékhez szükséges mezők, létrehozzuk az adatbázisban magát a terméket is:

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

Tegyünk késleltetést és a callbackünk kódjának utolsó sorában adjuk vissza a választ a termékkel:

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

Ezzel teljesen befejeztük a szerverrel a munkát és többé nem térünk vissza hozzá.

Mellesleg, még egy hasznos dolog. A export const worker = setupWorker(...handlers) sor után hozzáadhatod a következő kódot:

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

És most már látni fogod az egyes kezelők lefutásának eredményét a böngésző konzoljában.

Természetesen a szerverünk nem valódi és ha kézzel frissítjük az oldalt a böngészőben, akkor minden új termék objektumunk eltűnik.

Nyisd meg a diákok alkalmazásodat. Nyisd meg benne a server.js fájlt. Add hozzá a handlers tömbhöz a POST kérés kezelését. A kérés testében fogadod az új hozzáadott diák adatait.

A http.post callback-jének testében csomagold ki az adatokat és hiba esetén küldj megfelelő választ.

Ha minden rendben, akkor keresd meg az adatbázisban az oktatót a kapott id alapján és írd be az adataiba. Írd be az adatokba, az adatbázis alapján létrehozott votes objektumot is.

Az összegyűjtött adatok alapján hozz létre egy student objektumot az új diákkal és küldd el azt a szerver válaszában.

Magyar
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
A weboldal működéséhez, elemzéshez és személyre szabáshoz sütiket használunk. Az adatfeldolgozás a Adatvédelmi irányelvek szerint történik.
összes elfogadása beállítás elutasítás