node package manager
Share your code. npm Orgs help your team discover, share, and reuse code. Create a free org »



A Mongoose plugin that enables you to produce formatted output of your instantiated models.


When using Mongoose, it is also likely that you are looking for different ways to output the contents of instances of your models.

But it is not always certain that you require all fields of your object, or maybe you wish them to be arranged in alternative manner.

You may even want to populate database references differently.

This plugin for Mongoose can solve all of those problems for you.


  // schema.js
  var formatPlugin = require('mongoose-format');
  // schema definition
  var schema = mongoose.schema({ ... });
  schema.methods.someMethod = function () {
    return this.value;
  // model.js
  // we require the schema from above
  var schema = require(...);
  // create a model based on that schema
  var Model = mongoose.model('Schema', schema);
  // let's add a format
  Model.addFormat('api_v1', function (done) {
    var format = {
      fieldA: this.value,
      fieldB: this.some_method()
    done(null, format);
  // instantiate our model
  var model = new Model({ ... });
  model.format('api_v1', function (err, output) {

I hope that piece of code is good enough to illustrate. I recommend using some kind of async flow control to create more advanced formats.


Copyright (C) 2012 Christoffer Hallas

Distributed under the MIT License, the same as Node.js.