mongoose-denormalize
Bidirectional denormalization for your Mongoose models
Example
var mongoose = ;var denormalize = ; var User = username: String; var Post = user: type: mongooseSchemaObjectId ref: 'User' ; Post; 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;
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;
When a User
is saved, the value of username
will be updated in all Post
s
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