mongoose-jsonschema
v0.3.0
Published
Mongoose schema to JSON schema and back
Downloads
234
Readme
Mongoose schema to JSON schema and back
Motivation
This library represents a practical approach to convert the schemas used in a Mongoose model so that they can conveyed to hypermedia clients that interact with the web service.
Installation
npm install mongoose-jsonschema
Usage
Adding hypermedia controls in the Mongoose model
A Mongoose model should be augmented so that the schema options contains a JSON tranformation function:
var mongoose = require('mongoose');
var schema = new mongoose.Schema({
...
}, {
toJSON: {
transform: function (doc, ret, options) {
ret._links = {
describedBy: {
href: '/meta/schemas/example'
}
};
}
}
});
var model = mongoose.model('Example', schema);
Now, every time the model is converted to JSON, the representation will convey to the client the link that describes the schema of the document. The representation uses the HAL convention but other san be used as well.
Exposing the schemas
var express = require('express'),
mongoose = require('mongoose'),
jsonSchema = require('mongoose-jsonschema').modelToJSONSchema;
var app = express();
app.get('/meta/schemas/:schema', function (req, res) {
res.set({
'Content-Type': 'application/schema+json'
}).send(jsonSchema(mongoose.model(req.params.schema)).end();
});
API
modelToJSONSchema(model, options) ⇒ Object ⏏
Kind: Exported function
Returns: Object - JSONSchema
| Param | Type | Description |
| --- | --- | --- |
| model | object | Mongoose model to be converted |
| options | object | Options for customising model conversion |
| options.reserved | Array.<string> | object | Model properties found in the array are not included in the schema or map of properties to be converted |
| options.reserved.property | boolean | Include/do not include model property
into schema |