JSON → Mongoose
MongoDB & Node.js Entwicklertools

JSON zu Mongoose Schema & TypeScript Model Generator

Erkennen und generieren Sie MongoDB Mongoose-Schemas, TypeScript Document-Interfaces, Subdokumente, Timestamps und Modell-Exporte aus JSON.

100% clientseitige Privatsphäre
Null Serverübertragung
Vorlagen:
Mongoose Compiler-Optionen
User•Separate Subdocuments
Rohe JSON-Eingabe
import mongoose, { Schema, Document, Model, Types } from 'mongoose';

// ============================================================================
// Subdocument TypeScript Interfaces
// ============================================================================
IProfile {
  firstName: string;
  lastName: string;
  avatarUrl: string;
  bio: string;
  website: string;
}

IAddress {
  label: string;
  street: string;
  city: string;
  state: string;
  zipCode: string;
  country: string;
  isPrimary: boolean;
}

IPreferences {
  theme: string;
  receiveNewsletter: boolean;
}

// ============================================================================
// Main Document Interface
// ============================================================================
IUserDocument extends Document {
  username: string;
  email: string;
  passwordHash: string;
  roles: string[];
  profile: IProfile;
  score: number;
  isActive: boolean;
  addresses: Types.DocumentArray<IAddress>;
  preferences: IPreferences;
  lastLoginAt: Date;
  createdAt: Date;
  updatedAt: Date;
}

// ============================================================================
// Nested Child Schemas
// ============================================================================
const ProfileSchema = new Schema<IProfile>(
  {
    firstName: { type: String, required: true, trim: true },
    lastName: { type: String, required: true, trim: true },
    avatarUrl: { type: String, required: true, trim: true },
    bio: { type: String, required: true, trim: true },
    website: { type: String, required: true, trim: true },
  },
  { _id: false }
);

const AddressSchema = new Schema<IAddress>(
  {
    label: { type: String, required: true, trim: true },
    street: { type: String, required: true, trim: true },
    city: { type: String, required: true, trim: true },
    state: { type: String, required: true, trim: true },
    zipCode: { type: String, required: true, trim: true },
    country: { type: String, required: true, trim: true },
    isPrimary: { type: Boolean, required: true },
  },
  { _id: false }
);

const PreferencesSchema = new Schema<IPreferences>(
  {
    theme: { type: String, required: true, trim: true },
    receiveNewsletter: { type: Boolean, required: true },
  },
  { _id: false }
);

// ============================================================================
// Root Document Schema
// ============================================================================
const UserSchema = new Schema<IUserDocument>(
  {
    username: { type: String, required: true, unique: true, trim: true },
    email: { type: String, required: true, unique: true, trim: true, lowercase: true },
    passwordHash: { type: String, required: true, trim: true },
    roles: [{ type: String, trim: true }],
    profile: { type: ProfileSchema, required: true },
    score: { type: Number, required: true },
    isActive: { type: Boolean, required: true },
    addresses: [AddressSchema],
    preferences: { type: PreferencesSchema, required: true },
    lastLoginAt: { type: Date, required: true },
  },
  {
    timestamps: true,
    versionKey: false
  }
);

// ============================================================================
// Model Export (Safe for Next.js Fast Refresh & Node.js Cluster)
// ============================================================================
User: Model<IUserDocument> =
  mongoose.models.User || mongoose.model<IUserDocument>('User', UserSchema);

export default User;
Erkannte Schema-Felder
26 Eigenschaften
Verschachtelte Subdokumente
3 Unterschemas
Erkannte BSON-Typen
AddressSchema, Boolean, Date, Number, PreferencesSchema, ProfileSchema, String

100% Client-seitige Analyse

JSON-Parsing, Typinferenz und Codegenerierung laufen vollständig lokal in Ihrem Browser ohne Netzwerkübertragung.

Dual-Stack Codegenerierung

Erzeugt parallel Mongoose-Schemas, TypeScript-Interfaces, typsichere DTOs und Laufzeit-Zod-Validierungsschemas.

Mongoose Best Practices

Automatische Erkennung von Timestamps, ObjectId-Referenzen, String-Trimming und Subdokument-Konfigurationen.

Technische Referenz & Architektur-Leitfaden

JSON zu Mongoose Schema & TypeScript Model Generator — Referenz-Leitfaden

Erkennen und generieren Sie MongoDB Mongoose-Schemas, TypeScript Document-Interfaces, Subdokumente, Timestamps und Modell-Exporte aus JSON.

Wichtige Parameter & Steuerelemente

ModellnameString

Primärer Bezeichner zum Kompilieren des Mongoose-Modells und Erstellen der TypeScript-Document-Schnittstelle.

Standard: ExampleModel
TimestampsBoolean

Ergänzt { timestamps: true } in den Schema-Optionen, wodurch createdAt- und updatedAt-Felder automatisch verwaltet werden.

Standard: true
Subdokument-StrategieEnum (separate | inline)

Legt fest, ob verschachtelte JSON-Objekte in eigenständige Kind-Schemas ausgelagert oder inline deklariert werden.

Standard: separate
ObjectId automatisch erkennenBoolean

Erkennt 24-stellige Hexadezimal-Strings automatisch und mappt diese auf mongoose.Schema.Types.ObjectId.

Standard: true
Strings trimmenBoolean

Setzt trim: true bei allen erkannten String-Pfaden, um führende und nachgestellte Leerzeichen beim Speichern zu entfernen.

Standard: true

Profi-Tipps & Best Practices

Automatische Array-Schema-Zusammenführung

Bei Arrays mit uneinheitlichen JSON-Objekten bildet der Generator die Vereinigung aller Felder, damit keine optionalen Attribute verloren gehen.

Speicheroptimierung mit _id: false

Für eingebettete Subdokument-Arrays, die keine eigene Abfrage oder Indexierung benötigen, spart { _id: false } wertvollen BSON-Speicherplatz ein.

Dual-Stack TypeScript Typensicherheit

Nutzen Sie HydratedDocument<IModel> für Mongoose-Operationen und das Basis-Interface als reines DTO für API-Endpunkte und Frontend-Payloads.

Index- und Performance-Strategie

Versehen Sie hochfrequentierte Suchfelder (z. B. E-Mail oder Benutzername) im generierten Schema direkt mit { index: true } oder { unique: true }.

Häufige Fallstricke & Fehlerbehebung

Arrays mit gemischten Datentypen verursachen Typkonflikte

Wenn ein JSON-Array verschiedene Typen enthält (z. B. Strings und Zahlen), deklarieren Sie den Pfad als [mongoose.Schema.Types.Mixed] oder vereinheitlichen Sie die Rohdaten.

ISO-8601-Datumsangaben werden fälschlicherweise als String typisiert

Stellen Sie sicher, dass Datumsangaben dem Standard ISO 8601 entsprechen (z. B. 2026-10-17T00:00:00.000Z), damit die Engine sie zuverlässig als Date erkennt.

Zirkuläre oder tief verschachtelte Strukturen überlasten das Schema

Wählen Sie die Subdokument-Strategie 'separate', um verschachtelte Hierarchien in modulare Child-Schemas aufzuteilen, oder flachen Sie rekursive Referenzen ab.

Häufig gestellte Fragen (FAQ)

Wie bestimmt der Generator die Mongoose-BSON-Typen aus JSON-Werten?▼

Das Tool analysiert JavaScript-Typen, Regex-Muster für ISO-8601-Datumsangaben und 24-stellige Hex-ObjectIds sowie verschachtelte Datenstrukturen, um sie präzise auf Mongoose-SchemaTypes abzubilden.

Was unterscheidet ein HydratedDocument von einem Standard-TypeScript-Interface?▼

Ein Standard-Interface beschreibt reine JSON-Datenattribute (DTO), während HydratedDocument<T> zusätzlich alle Mongoose-Instanzmethoden (.save(), .populate(), Virtuals) und interne Felder wie _id enthält.

Wann sollten separate Child-Schemas gegenüber Inline-Objekten bevorzugt werden?▼

Separate Child-Schemas empfehlen sich bei komplexeren Objekten mit eigener Validierungslogik, Standardwerten, Middleware oder wenn Teilstrukturen in mehreren Modellen wiederverwendet werden.

Kann der MongoDB-Collection-Name individuell angepasst werden?▼

Ja. Mongoose pluralisiert standardmäßig den Modellnamen, Sie können jedoch als dritten Parameter bei mongoose.model('ModellName', Schema, 'wunsch_collection') einen festen Namen vorgeben.

Werden meine JSON-Daten zur Schemagenerierung an einen Server übertragen?▼

Nein. Die gesamte Typinferenz und Codegenerierung erfolgt zu 100 % lokal in der Sandbox Ihres Webbrowsers ohne jeglichen Datentransfer über das Netzwerk.

Verwandte Werkzeuge & Dienstprogramme

Alle Werkzeuge →