Skip to content

scttnlsn/mongoose-denormalize

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

mongoose-denormalize

Bidirectional denormalization for your Mongoose models

Example

var mongoose = require('mongoose');
var denormalize = require('mongoose-denormalize');

var User = new mongoose.Schema({
    username: String
});

var Post = new mongoose.Schema({
    user: { type: mongoose.Schema.ObjectId, ref: 'User' }
});

Post.plugin(denormalize, {
    username: { from: 'user' }
});

User.plugin(denormalize, {
    username: { to: 'Post', ref: 'user' }
});

Usage

Denormalizing from a foreign model

In the example above each Post references a User. Suppose we'd like to denormalize the referenced User's username into each Post.

Post.plugin(denormalize, {
    username: { from: 'user' }
});

Upon saving a Post, this denormalizes the user (referenced by the key user) into user_username. The key in which denormalized data is stored can be overridden by specifying an alternate key option. Note that User's username is assumed to be of type String unless a type option is specified above.

Denormalizing into a referencing model

In the example above, when we update a User, we'd like to push values to any referencing models that are denormalizing User keys (i.e. username)- ensuring denormalized data is kept current.

User.plugin(denormalize, {
    username: { to: 'Post', ref: 'user' }
});

When a User is saved, the value of username will be updated in all Posts referencing the user (the referencing key is specified via the ref option). By default the username will be stored in user_username unless overridden by specifying a key option.

Install

npm install mongoose-denormalize

Tests

make test

You can optionally specify the MongoDB URI to be used for tests:

MONGODB_URI=mongodb://localhost:27017/mongoose_denormalize_tests make test

About

Bidirectional denormalization for your Mongoose models

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published