mongoose-fill
mongoose-fill is mongoose.js add-on that adds simple api for virtual async fields.
why?
This just gives you a simple and easy to use API for:
- implementing db joins without keeping refs to related objects (with refs you can use
populate
) - joining mongoose object with any kind of data (with any async service - other db or web service)
api use cases - learn by example
basic use case fills single filed
// import of 'mongoose-fill' patches mongoose and returns mongoose object, so you can do:var mongoose = ...// note you should set virtual properties options // on you schema to get it mongoose-fill workvar myParentSchema = ... toObject: virtuals: true toJSON: virtuals: true myParentSchema...Parent
filling property using single query for multiple objects
myParentSchemavalue{ // `this` is current (found) instance thisdb // multi is used for queries with multiple fields }... // you can place property name that should be filled in `select` optionParent
using fill options with default values
myParentSchemaoptions'' '-age'... // fill children with only `name age` properties ordered by `age`Parent
Also check the code of test for more use cases
how does it work
- adds fill method to mongoose schema object
- adds
fill
andfilled
prototype methods to mongoose model - patches mongoose query exec method extending query api with
fill
method - implemented using mongoose virtual setters/getters (actual value is stored in
__propName
property)
Installation
npm install mongoose-fill
Run tests
npm test