mind v0.0.2
node-mind
mind is not a database / minimal database is lightweight asynchronous persistence layer for node.
mind was inspired by anti-db's idea that often, "you don't need a database, you need an in-memory object that saves itself to disk". However, I needed Windows support, evented API, and asynchronous loading, which, while simpler and more elegant in implementation, it forgoes.
Install
npm install mindFeatures
- Evented API, as well as a simplified single-callback wrapper
- Automatically persists database state
		 Autosave at intervals, and at process.exit(); On non-Windows systems, also autosave onSIGINT,SIGHUP, andSIGQUIT.
- Database autocreation
Usage
Evented API
var mind = require('mind');
var opts = { encoding: 'UTF-8', autosave: 60000 };
var dbm = new mind('path/to/db.json', opts);
dbm.on('open', function (e) {
	console.log('[INFO] Opened db: ' + e.msg);
	e.db['foo'] = 'bar';
	e.db['baz'] = [1, 2, 3, 4];
});
dbm.on('close', function (e) {
	console.log('[INFO] Closed db: ' + e.msg);
});
dbm.on('save', function (e) {
	console.log('[INFO] Saved db: ' + e.msg);
});
dbm.on('error', function (e) {
	console.error('[ERROR] Error in db: ' + e.msg);
	console.error(e.error);
});
dbm.open();Callback API
var mind = require('mind');
mind.open('path/to/db.json', function (err, db, data) {
}, API
Class: MindManager
new MindManager(fn, opts)
- fn: String - Path writeable by the node process
- opts: Object - Options hash containing any of:- autosave: Number - ms between save operations (0 or negative disables autosave). Default:- 60000- encoding: String - encoding used to read and write JSON file. Default:- 'UTF-8'
Create a new MindManager.
manager.open()
- Emits openon success.
Open and read the database file, creating it if necessary.
manager.save()
- Emits saveon success.
Asynchronously save the database file to disk.
manager.close()
- Emits closeon success.
Synchronously closes the database file, persisting it to disk. This function
is synchronous to support non-autosaved use of mind, and is suitable for
calling within process.exit.
manager.startAutosave() / manager.stopAutosave()
Synchronously start and stop the autosave process.
MindManager.getManager(db)
- db: Object - Database object for which to get the associated- MindManager
Get the MindManager for a particular database object.
MindManager.open(fn, cb(err, db, data), opts)
- fn: see- new MindManager
- opts: see- new MindManager
- cb: Callback used to respond to all events emitted by the created manager:- open: passes- dbas the new database object- error: passes- erras original error thrown, and *- open,- save,- close,- error: passes- dataas the complete event data object
Handles the creation of a manager object in a simplified single-callback
model. It is recommended to not bind your callback to any particular context
so you can access the manager instance at this. If you must, though,
the instance managing a particular db object can be accessed by:
mind.getManager(db)Events
open(event)
event.db: The database object opened.
event.msg: Any message regarding the open operation.
Emitted on successful opening of a database.
close(event)
event.msg: Any message regarding the close operation.
Emitted on successful closing of a database.
save(event)
event.msg: Any message regarding the save operation.
Emitted on successful save of a database to persistent storage, either explicitly-initiated or autosave.
error(event)
event.error: The originally-thrown error, if available.
event.msg: Any message regarding the error.
Emitted on any non-fatal caught error.