Hur kan ett generellt basschema se ut?
Exemplet skapar ett basschema där egenskapen createdAt
och updatedAt
läggs till (id
läggs till automatiskt). När ett dokument konverteras till ett vanligt objekt eller JSON, tas egenskaperna _id
och __v
bort, medan eventuella virtuella egenskaper och egenskaper baserade getters läggs till.
Görs en så kallad "over posting", det vill säga försök att skicka med fler egenskaper än schemat definierar, kastas ett undantag i och med att strict
sätts till true
.
Samtidighetskontroll, "concurrency control", är inte aktiverat och för att göra det måste optimisticConcurrency
sättas till true (bortkommenterad) och versionKey
kommenteras bort eller sättas till true
. (För att egenskapen __v
automatiskt ska räknas upp krävs det att uppdaterade dokument sparas med metoden Document.save()
.)
Koden importerar mongoose-paketet och skapar ett basschema med tomt objekt som struktur. Den definierar sedan inställningar att använda vid konvertering av Mongoose-dokument till vanliga objekt och JSON.
Inställningarna för konvertering anger att getters och virtuella egenskaper ska inkluderas och att versionsinformation ska exkluderas. transform
-funktionen används till att anpassa den resulterande objektstrukturen vid konvertering av dokument.
Detta följs av inställningen som lägger till tidsstämplar (createdAt
och updatedAt
) i basschemat och ställer in de tidigare definierade konverteringsfunktionerna (toObject
och toJSON
). Slutligen exporteras det modifierade basschemat som en oföränderlig konstant.
Hur kan jag använda det generella basschemat?
Exempel som lägger till schemat BASE_SCHEMA.
Person
-dokument som lagras i samlingen persons
i en MongoDB-databas.
Person
-dokument som hämtats ut och konverterats till JSON.
_id
: Dokumentet har ett unikt _id
-värde (ObjectId
), vilket MongoDB automatiskt genererar för varje dokument om inget annat anges.
name
, profession
och age
: Dessa egenskaper har lagts till i schemat för att representera en persons namn, yrke och ålder.
createdAt
och updatedAt
: Dessa egenskaper läggs automatiskt till av Mongoose när timestamps
är satt till true
. createdAt
anger när dokumentet skapades första gången och updatedAt
uppdateras varje gång dokumentet ändras.
__v
: Denna egenskap läggs automatiskt till av Mongoose och används för att spåra dokumentversionen (dokumentets ändringshistorik). I JSON-representationen är det inte inkluderat, eftersom versionKey
sätts till false
i basschemat.
id
: I JSON-representationen visas _id
som id
. I funktionen transform
tas _id
bort i samband med konverteringen från dokument till JSON.
Sammanfattningsvis visar dessa exempel hur en persons uppgifter lagras i en samling i en MongoDB-databas och hur ett hämtat dokument som konverteras till JSON ser ut.