mongoose-with-queries

v1.0.1
Build your own domain specific language around your models using chainable mongoose queries.
mongoose dsl chainable

Mongoose With Queries

Build your own domain specific language around your models using chainable mongoose queries.

build status npm version MIT license we're hiring

Usage

npm install mongoose-with-queries
var withQueries = require('mongoose-with-queries');

// Define your model
var Product = mongoose.model('Product', new mongoose.Schema({
    category: String,
    quantity: Number,
    price: Number
  })
);

// Define your queries
withQueries(Product, {
  category: function (query, category) {
    return query.where('category').equals(category);
  },

  quantity: function (query, quantity) {
    return query.where('quantity').equals(quantity);
  },

  isFruit: function (query) {
    return query.where('category').equals('fruit');
  },

  isSoldOut: function (query) {
    return query.quantity(0);
  },

  isAvailable: function (query) {
    return query.where('quantity').gt(0);
  },

  isBargain: function (query) {
    // Anything under $2.00
    return query.where('price').lt(200);
  }

});

// Use your queries

// Bakery products available for sale
// Product.find().where('category').equals('bakery').where('quantity').gt(0).exec()
Product.query.category('bakery').isAvailable().exec()


// Bargain produce we've already sold out of.
// Product.find().where('category').equals('fruit').where('quantity').equals(0).where('price').lt(200).exec()
Product.query.isSoldOut().isFruit().isBargain().exec()

Contributing

Please follow our Code of Conduct when contributing to this project.

We currently test against a local mongodb so make sure you have mongod running.

$ git clone https://github.com/goodeggs/mongoose-with-queries && cd mongoose-with-queries
$ npm install
$ npm test

Module scaffold generated by generator-goodeggs-npm.

npm i mongoose-with-queries

Metadata

  • MIT
  • Whatever
  • Good Eggs
  • released 7/22/2015

Downloads