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.