reactjs - Hur man arbetar med osparade enheter även om ID-attributet behövs?


Jag skapar en React-applikation där mina data har följande struktur:

interface BookCase {
    id: number;
    bookShelves: BookShelf[];
}
interface BookShelf {
    id: number;
}

Varje bokhylla och varje bokhyllplan har en id-egenskap. Jag använder detta för key-attributet och för att hitta en bokhylla i bookShelves-arrayen. Id genereras i backend av databasen (med en BigSerial i PostgreSQL) vid sparande.

Jag vill nu skapa ett nytt bokskåp i min frontend utan att omedelbart spara det till backend. Först vill jag arbeta med det, utföra några operationer på det (t.ex. placera en bok på hyllan), och därefter skicka hela batchen av ändringar med de nya objekten till backend där det sedan kommer att sparas i databasen.

Självklart har jag ännu inte något id, även om jag behöver ett för att arbeta med bokhyllorna. Ska jag skriva om min ansökan för att även acceptera null för id (jag skulle helst inte vilja)? Ska jag bara slumpmässigt skapa ett tillfälligt id, möjligtvis med dupliceringar med de id:n som redan finns i databasen (eller till exempel använda ett negativt värde som -1)? Då skulle jag behöva ersätta alla id:n i efterhand efter att de har sparats i databasen.

Med UUID:er skulle jag kunna generera det på frontend, men jag antar att det också måste finnas ett gemensamt mönster för att arbeta med bara ökande heltal som id.

Svar #1

Jag tror inte att det finns ett tydligt svar här.

I princip har du en objekt-relationell mappning och det finns olika sätt att hantera den. Entity Framework använder till exempel bara standardvärdet för datatypen. Så om entiteten ännu inte finns kommer ID att vara 0 och alla bevarade entiteter har värden som börjar vid 1 så det finns inga konflikter.

Ett sätt jag vanligtvis hanterar sparande på är genom att returnera den uppdaterade posten från förfrågan, så du ersätter bara din gamla med den och du får det korrekta ID-värdet tillämpat automatiskt.