Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Oppdatering av et element i databasen | Avanserte Next.js-funksjoner og Optimaliseringer
Next.js 14-mestring for Bygging av Moderne Webapplikasjoner

bookOppdatering av et element i databasen

Oppdatere en faktura – Enkle trinn

Når du oppdaterer en faktura, ligner prosessen mye på å opprette en. Her er en oversikt:

  1. Opprett en dynamisk rute: Opprett et nytt dynamisk rutesegment som inkluderer fakturaens id. På denne måten forteller vi appen hvilken faktura vi arbeider med;
  2. Les faktura-id: Hent fakturaens id fra sideparametrene;
  3. Hent spesifikk faktura: Hent informasjon om den valgte fakturaen fra databasen;
  4. Oppdater database: Etter at nødvendige endringer er gjort, oppdater fakturadataene i databasen.

Tilbake til prosjektet

1. Opprett en dynamisk rute

Basert på endrende data kan vi lage dynamiske rutesegmenter når vi ønsker fleksible ruter. Pakk inn navnet på en mappe i hakeparenteser for å opprette en dynamisk rute. For eksempel, bruk [id], [post] eller [slug] når vi ønsker variable segmenter i ruten.

  1. Naviger til /invoices-mappen og opprett en ny dynamisk rute kalt [id];
  2. Legg til en ny rute kalt 'edit' inne i /invoices/[id]-mappen. Inkluder en page.tsx.

Resultat:

La oss se nærmere på Table-komponenten i app/ui/invoices/table.tsx. Vi kan observere at UpdateInvoice mottar fakturaens id.

Gå til <UpdateInvoice />-komponenten (app/ui/invoices/buttons.tsx). Vi ser at vi bruker id som en del av href-verdien.

2. Les faktura-ID

Sett inn følgende kode i app/dashboard/invoices/[id]/edit/page.tsx.

3. Hent spesifikk faktura

Deretter importeres nye funksjoner kalt fetchInvoiceById og fetchSellers.

  • fetchInvoiceById returnerer data for en spesifikk faktura;
  • fetchSellers returnerer selgere for nedtrekksmenyen i skjemaet som viser alle selgere.

Vi kan effektivt hente både fakturaen og selgerne samtidig ved å bruke Promise.all.

La oss teste det! Vi kan åpne fakturasiden og klikke på redigeringsknappen (pennsymbol). Dette skal omdirigere oss til skjemaet med en forhåndsutfylt faktura.

4. Oppdater database

Det er nødvendig å sende id til Server Action for å oppdatere riktig post i databasen. Slik kan dette gjøres effektivt:

Bruk JS bind for å sende id til Server Action. Dette sikrer at alle verdier som sendes til Server Action blir korrekt kodet.

Unngå å sende id direkte som et argument i form-handlingen slik som dette:

// This won't work 
<form action={updateInvoice(id)}> 

Videre fortsetter vi med handlingene og oppretter en handling for å oppdatere fakturaen.

Prøv selv! Etter å ha redigert en faktura, send inn skjemaet, og du skal bli omdirigert til fakturasiden med den oppdaterte fakturaen.

I praksis

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 6. Kapittel 6

Spør AI

expand

Spør AI

ChatGPT

Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår

Suggested prompts:

Can you explain how the dynamic route works in this context?

What should I do if the invoice form doesn't prefill with data?

How do I handle errors when updating an invoice?

Awesome!

Completion rate improved to 2.08

bookOppdatering av et element i databasen

Sveip for å vise menyen

Oppdatere en faktura – Enkle trinn

Når du oppdaterer en faktura, ligner prosessen mye på å opprette en. Her er en oversikt:

  1. Opprett en dynamisk rute: Opprett et nytt dynamisk rutesegment som inkluderer fakturaens id. På denne måten forteller vi appen hvilken faktura vi arbeider med;
  2. Les faktura-id: Hent fakturaens id fra sideparametrene;
  3. Hent spesifikk faktura: Hent informasjon om den valgte fakturaen fra databasen;
  4. Oppdater database: Etter at nødvendige endringer er gjort, oppdater fakturadataene i databasen.

Tilbake til prosjektet

1. Opprett en dynamisk rute

Basert på endrende data kan vi lage dynamiske rutesegmenter når vi ønsker fleksible ruter. Pakk inn navnet på en mappe i hakeparenteser for å opprette en dynamisk rute. For eksempel, bruk [id], [post] eller [slug] når vi ønsker variable segmenter i ruten.

  1. Naviger til /invoices-mappen og opprett en ny dynamisk rute kalt [id];
  2. Legg til en ny rute kalt 'edit' inne i /invoices/[id]-mappen. Inkluder en page.tsx.

Resultat:

La oss se nærmere på Table-komponenten i app/ui/invoices/table.tsx. Vi kan observere at UpdateInvoice mottar fakturaens id.

Gå til <UpdateInvoice />-komponenten (app/ui/invoices/buttons.tsx). Vi ser at vi bruker id som en del av href-verdien.

2. Les faktura-ID

Sett inn følgende kode i app/dashboard/invoices/[id]/edit/page.tsx.

3. Hent spesifikk faktura

Deretter importeres nye funksjoner kalt fetchInvoiceById og fetchSellers.

  • fetchInvoiceById returnerer data for en spesifikk faktura;
  • fetchSellers returnerer selgere for nedtrekksmenyen i skjemaet som viser alle selgere.

Vi kan effektivt hente både fakturaen og selgerne samtidig ved å bruke Promise.all.

La oss teste det! Vi kan åpne fakturasiden og klikke på redigeringsknappen (pennsymbol). Dette skal omdirigere oss til skjemaet med en forhåndsutfylt faktura.

4. Oppdater database

Det er nødvendig å sende id til Server Action for å oppdatere riktig post i databasen. Slik kan dette gjøres effektivt:

Bruk JS bind for å sende id til Server Action. Dette sikrer at alle verdier som sendes til Server Action blir korrekt kodet.

Unngå å sende id direkte som et argument i form-handlingen slik som dette:

// This won't work 
<form action={updateInvoice(id)}> 

Videre fortsetter vi med handlingene og oppretter en handling for å oppdatere fakturaen.

Prøv selv! Etter å ha redigert en faktura, send inn skjemaet, og du skal bli omdirigert til fakturasiden med den oppdaterte fakturaen.

I praksis

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 6. Kapittel 6
some-alt