Skip to content
master
Switch branches/tags
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
src
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Mongo Fixture (Unmaintained)

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-fixture

Usage

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 test

Contributing

Pull requests, check the current source code for style. Its in coffeescript. And cheers

About

Declaratively populate mongodb using json files with relationships intact.

Resources

License

Releases

No releases published

Packages

No packages published