100 % lokal — Ihre Daten verlassen nie Ihren Browser

JSON in Mongoose — eine Modelldatei zum Einbinden

Ein JSON-Beispiel in ein Mongoose-Schema verwandeln. Ein Schema je Objekt, required wo das Beispiel einen Wert zeigt — fertig zum Export als Modell.

Sofort Privat Null Cookies

JSON-Eingabe

Mongoose-Ausgabe

Was dieses Werkzeug tut

Aus einer JSON-Probe wird ein Mongoose-Schema, ein const je Objekt, und am Ende ein Modell.

{ "id": 1, "name": "Ada", "address": { "city": "Paris" } }
import mongoose from 'mongoose';

const AddressSchema = new mongoose.Schema({
  city: { type: String, required: true },
});

const RootSchema = new mongoose.Schema({
  id: { type: Number, required: true },
  name: { type: String, required: true },
  address: { type: AddressSchema, required: true },
});

export default mongoose.model('Root', RootSchema);

Kinder zuerst: Schemas sind Laufzeitwerte, eines muss da sein, bevor ein anderes es benutzt. Ein Array von Dokumenten an der Wurzel beschreibt sein erstes Element — das ist die Form des Datensatzes, die Liste ist ohnehin schon die Sammlung.

required an einem Array braucht Hilfe

Mongoose gibt jedem Array die Vorgabe []. Ein Feld { type: [String], required: true } validiert daher auch ohne den Schlüssel: die Vorgabe erfüllt die Pflicht. An Mongoose 9 geprüft:

Dokumentrequired: truerequired: true, default: undefined
{ tags: ["a"] }geht durchgeht durch
{ tags: [] }geht durchgeht durch
{}geht durchscheitert

Die erste Spalte sagt nicht, was das Wort verspricht. Array-Felder werden deshalb mit default: undefined neben required: true ausgegeben, damit ein fehlendes Array der Fehler ist, als der es auftritt. Ein leeres Array geht weiterhin durch, und das zu Recht: es ist ein Wert.

Verschachtelte Objekte werden Subdokumente, mit eigener _id

address oben ist ein Subdokument, und Mongoose gibt ihm eine eigene _id:

{ _id: ObjectId("…"), address: { city: "Paris", _id: ObjectId("…") } }

Das ist Mongooses Vorgabe, keine Zutat von hier. Sind Ihnen diese inneren Kennungen im Weg, entfernt new mongoose.Schema({ … }, { _id: false }) sie — eine Entscheidung über Ihre Dokumente, und darum Ihre.

Ein MongoDB-Export ist nicht das JSON, das Sie wollen

mongoexport schreibt erweitertes JSON:

{ "_id": { "$oid": "65f1c…" }, "created": { "$date": "2026-01-01T00:00:00Z" } }

Das sind Objekte: der Generator macht Subdokument-Schemas daraus, und _id endet als Subdokument mit eigener _id, was sicher nicht gemeint war. Ersetzen Sie sie von Hand durch mongoose.Schema.Types.ObjectId und Date. Ein Schlüssel namens $oid bedeutet MongoDB etwas und einem strukturellen Leser nichts.

Mixed ist die Stelle, an der die Probe schwieg

null, ein unbekannter Wert, ein leeres Array und ein gemischtes Array ergeben alle mongoose.Schema.Types.Mixed. Ein Mixed-Feld wird nicht validiert und — gut zu wissen — seine Änderungen werden nicht automatisch verfolgt: Sie müssen markModified rufen. Engen Sie es ein, sobald Sie wissen, was dort hingehört.

Datenschutz ab Werk

Alles läuft lokal in deinem Browser mit JavaScript. Deine Daten werden nie hochgeladen, wodurch das Tool auch für sensible Inhalte sicher ist und offline funktioniert.

Häufige Fragen

Warum tragen Array-Felder `default: undefined`?
Weil `required: true` an einem Array sonst nichts bewirkt. Mongoose gibt jedem Array die Vorgabe `[]`, also validiert ein Dokument ohne den Schlüssel trotzdem: die Vorgabe erfüllt die Pflicht. Mit `default: undefined` verhält sich das Feld so, wie das Wort „Pflicht“ klingt. An Mongoose 9 geprüft, nicht vermutet.
Mein verschachteltes Objekt hat eine `_id` bekommen. Woher?
Von Mongoose: ein verschachteltes Schema als Feldtyp ist ein Subdokument, und Subdokumente erhalten standardmäßig ihre eigene `_id`. Wollen Sie keine, übergeben Sie `{ _id: false }` in den Schema-Optionen. Sie bleibt, weil es Mongooses Vorgabe ist und ein stilles Entfernen das Aussehen Ihrer Dokumente änderte.
Ich habe einen MongoDB-Export eingefügt und bekomme `$oid`-Felder. Stimmt das?
Das stand in der Probe. Ein `mongoexport`-Dokument ist erweitertes JSON — `{"_id": {"$oid": "…"}}`, `{"$date": "…"}` —, also sieht der Generator Objekte und macht Subdokumente daraus. Ersetzen Sie sie durch `mongoose.Schema.Types.ObjectId` und `Date`: das Werkzeug kann die Konvention hinter einem nie gesehenen Schlüssel nicht kennen.

Ähnliche Konverter