Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/medolino/mongoose-schema-parser

Parse mongoose schema to JSON format
https://github.com/medolino/mongoose-schema-parser

mongoose mongoose-parser parse parser schema schema-parser

Last synced: about 13 hours ago
JSON representation

Parse mongoose schema to JSON format

Awesome Lists containing this project

README

        

# Mongoose Schema Parser

[![Build Status](https://travis-ci.org/medolino/mongoose-schema-parser.svg?branch=master)](https://travis-ci.org/medolino/mongoose-schema-parser)
[![Coverage Status](https://coveralls.io/repos/github/medolino/mongoose-schema-parser/badge.svg?branch=master)](https://coveralls.io/github/medolino/mongoose-schema-parser?branch=master)
[![Known Vulnerabilities](https://snyk.io/test/github/medolino/mongoose-schema-parser/badge.svg?targetFile=package.json)](https://snyk.io/test/github/medolino/mongoose-schema-parser?targetFile=package.json)
[![JavaScript Style Guide](https://img.shields.io/badge/code_style-standard-brightgreen.svg)](https://standardjs.com)
[![npm](https://img.shields.io/npm/v/mongoose-schema-parser.svg)](https://www.npmjs.com/package/mongoose-schema-parser)

Mongoose Schema Parser tool parses Mongoose schemas defined in project and returns data in JSON format.

Cli usage example

## How It Works

Script uses mongoose instance to parse registered schemas.
You can use it from CLI or inside your application code.

## Install

Install globally if you want to use it from cli

```bash
npm i -g mongoose-schema-parser
```

or locally if you want to use it from your code

```bash
npm i mongoose-schema-parser --save
```

## Usage

#### Cli usage

If you install package globally, you can run it from anywhere in your system.
Script returns file with parsed schema in JSON format.

```bash
mongoose-schema-parser -c /path/to/project -p "**/*.model.js" -o output-schema.json
```

Script options:

```bash
-c, --cwd Current working directory [string] [default: "/your/project/dir"]
-p, --pattern Search file pattern [string] [required] [default: "**/*.model.js"]
-o, --output Output file path [string] [required]
--help, -h Show help [boolean]
```

Output example:
```JSON
{
"Category": {
"schema": {
"_id": {
"type": "ObjectId"
},
"name": {
"type": "String",
"details": {
"required": true,
"maxlength": 150
}
},
"enabled": {
"type": "Boolean",
"details": {
"default": true
}
}
}
},
"Item": {
"schema": {
"_id": {
"type": "ObjectId"
},
"name": {
"type": "String"
},
"category": {
"type": "ObjectId",
"details": {
"ref": "Category"
}
},
"sizes": {
"type": "Schema",
"schema": {
"size": {
"type": "Number"
}
}
},
"created": {
"type": "Date",
"details": {}
}
}
}
}

```

#### Code usage

This example shows, how to use ```parseSchemaFromMongoose``` function to parse schema in your application. Function returns schema as JS object.

```JS
const mongoose = require('mongoose')
const { parseSchemaFromMongoose } = require('mongoose-schema-parser')

// content of ./models/example-01.model
/*
const ExampleSchema = new mongoose.Schema({
name: 'string'
})
mongoose.model('ExampleModel', ExampleSchema)
*/
require('./models/example-01.model')

const exportedSchema = parseSchemaFromMongoose(mongoose)

console.log(JSON.stringify(exportedSchema, null, 2))
/* outputs:
{
"ExampleModel": {
"schema": {
"name": {
"type": "String"
},
"_id": {
"type": "ObjectId"
}
}
}
}
*/
```