@picadeck/mongoose-parser
Parse Mongoose models and connections into a UniversalSchema for visualization.
Installation
npm install @picadeck/mongoose-parserImport
import {
parseMongooseModels,
parseMongooseConnection,
} from "@picadeck/mongoose-parser";API
parseMongooseModels(models: Model[]): UniversalSchema
Accepts an array of Mongoose model instances. Iterates each model's schema paths, extracts fields, types, validators, and ref-based relationships.
parseMongooseConnection(connection: Connection): UniversalSchema
Convenience wrapper that reads all registered models from a Mongoose connection object and passes them to parseMongooseModels.
Full Example
server.ts
import express from "express";
import mongoose from "mongoose";
import { schemaVisualizer } from "@picadeck/core";
import { parseMongooseConnection } from "@picadeck/mongoose-parser";
// Define your models
const UserSchema = new mongoose.Schema({
name: { type: String, required: true },
email: { type: String, required: true, unique: true },
posts: [{ type: mongoose.Schema.Types.ObjectId, ref: "Post" }],
});
const PostSchema = new mongoose.Schema({
title: String,
body: String,
author: { type: mongoose.Schema.Types.ObjectId, ref: "User" },
createdAt: { type: Date, default: Date.now },
});
mongoose.model("User", UserSchema);
mongoose.model("Post", PostSchema);
const app = express();
await mongoose.connect("mongodb://localhost:27017/blog");
const schema = parseMongooseConnection(mongoose.connection);
app.use("/schema", schemaVisualizer(schema));
app.listen(3000);Supported Types
| Mongoose Type | NormalizedType |
|---|---|
| String | STRING |
| Number | INTEGER / FLOAT |
| Boolean | BOOLEAN |
| Date | DATETIME |
| ObjectId | UUID |
| Buffer | BINARY |
| Mixed | JSON |
| Array | ARRAY |
| Map | JSON |
Notes
- Works with
@nestjs/mongooseout of the box. NestJS decorators compile to standard Mongoose schemas at runtime. - Ref fields are automatically detected as relationships.
- Discriminator models are included when using
parseMongooseConnection.