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

    mongoose-denormalizepublic

    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

    Keywords

    none

    install

    npm i mongoose-denormalize

    Downloadsweekly downloads

    20

    version

    0.0.1

    license

    none

    repository

    githubgithub

    last publish

    collaborators

    • avatar