mongo-memory
v0.0.5
Published
mongodb in memory for testing or mocking
Downloads
18
Maintainers
Readme
Mongo Memory
Bootstrap programmatically Mongodb for testing or mocking during development.
Works on all platforms which is due to the awesome mongodb-prebuilt package.
Installation
npm install mongo-memory
Usage
const MongoInMemory = require('mongo-memory')
const port = 8000
const dbPath = "./tempb/.data" // Mongodb placed some metadata
const mongoServerInstance = new MongoMemory(port, dbPath)
mongoServerInstance.start().then(server) => {
mongoServerInstance.getMongouri('myDatabaseName')
mongoServerInstance.getCollection('coll1')
mongoServerInstance.getDocumentById('myDatabaseName', 'coll1', "<id>")
mongoServerInstance.addDocumentById('myDatabaseName', 'coll1', { a: 1, b: 2 })
mongoServerInstance.addDirectoryOfCollections('myDatabaseName', '<path>')
mongoServerInstance.mongodb.ObjectId
mongoServerInstance.serialize // EJSON
mongoServerInstance.deserialize // EJSON
})
mongoServerInstance.stop()
Run tests
$ npm run test
What about BSON Types ?
You can use the EJSON format to express BSON Types with JSON e.g ObjectId.
{
"_id" : {
"$oid": "ec939793b7d8fe8f9f2aa707"
},
'last_seen_at': {
'$date': 1405266782008
}
}
Background
Mongodb storageEngine ephemeralForTest is used. The connection is created by the official mongodb package.
Credits
Most code was copied from mongo-in-memory but with significant improvements:
Changes:
- Don't save metadata in node_modules
- Don't generate random folders
- Clean up of metadata must be handled by user
- 100% Promise API
- Update mongodb-prebuilt to the newest version
- Update dependencies and tests
- Gracefully shutdown Mongodb when execute stop
- Create recursively databasePath