0.0.5 • Published 7 years ago
mongo-memory v0.0.5
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