mongo-fixture v1.0.8
Mongo Fixture
Node module for populating a Mongo db using JSON.
Declaratively reference other documents in the same dataset to create relationships between them.
Install
npm install --save-dev mongo-fixtureUsage
fixture = require('mongo-fixture');
fixture('data.json', function(error){
if(err){
throw err;
}
});Example JSON file
[
{
"__collection": "User",
"username": "User A",
"age": 20,
"active": false,
"nonCollection": {
"propA": "A"
},
"plan": {
"__collection": "Plan",
"__ref": "1",
"name": "Plan A",
"price": 100,
"private": true,
"specialOffer": {
"__collection": "SpecialOffer",
"propX": "X"
},
"otherProp": {
"__collection": "OtherThing",
"propR": "R",
"__ref": "1"
}
}
},
{
"__collection": "User",
"username": "User B",
"age": 20,
"active": true,
"plan": {
"__collection": "Plan",
"__duplicate": "1"
}
},
{
"__collection": "User",
"username": "User C",
"age": 32,
"active": true,
"plan": {
"__collection": "Plan",
"__ref": "2",
"name": "Plan B",
"price": 200,
"private": false,
"specialOffer": {
"__collection": "SpecialOffer",
"propX": "Y"
},
"otherProp": {
"__collection": "OtherThing",
"__duplicate": "1"
}
}
},
{
"__collection": "User",
"username": "User D",
"age": 33,
"active": true,
"plan": {
"__collection": "Plan",
"__duplicate": "2"
}
}
]Child Documents
Child documents are simple JSON objects with a __collection attribute.
The child objects become ObjectId references when the db is populated.
Eg:
{
"__collection": "ParentCollection",
child: {
"__collection": "ChildCollection",
"keyX": "valueX"
}
}Becomes the following documents:
// ParentCollection Doc
{
child: ObjectId("55c0ade6b47164eb35a544a1")
}
// ChildCollection Doc
{
"keyX": "valueX"
}Duplicates
Children can belong to multiple parents using __ref and __duplicate attributes.
Defined a common child once and give it a unique __ref value of your choice.
Then in another parent object reference the child by specifying the __duplicate attribute and setting it to the value of the __ref of the original.
Eg:
[
{
"__collection": "ParentCollection",
"child": {
"__collection": "ChildCollection",
"_ref": "1",
"otherProp": "X"
}
},
{
"__collection": "ParentCollection",
"child": {
"__collection": "ChildCollection",
"_duplicate": "1"
}
}
]NB: always specify the __collection attribute.
Testing
npm testContributing
Pull requests, check the current source code for style. Its in coffeescript. And cheers