mirror of https://github.com/seald/nedb
parent
28ae91ec60
commit
8dd68766b6
@ -0,0 +1,22 @@ |
|||||||
|
var fs = require('fs') |
||||||
|
; |
||||||
|
|
||||||
|
|
||||||
|
/** |
||||||
|
* Check if directory exists and create it on the fly if it is not the case |
||||||
|
* TODO: make recursive |
||||||
|
*/ |
||||||
|
function ensureDirectoryExists (dir, cb) { |
||||||
|
var callback = cb || function () {}; |
||||||
|
|
||||||
|
fs.exists(dir, function (exists) { |
||||||
|
if (exists) { |
||||||
|
return callback(); |
||||||
|
} else { |
||||||
|
fs.mkdir(dir, '0777', callback); |
||||||
|
} |
||||||
|
}); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
module.exports.ensureDirectoryExists = ensureDirectoryExists; |
@ -0,0 +1,58 @@ |
|||||||
|
/** |
||||||
|
* The datastore itself |
||||||
|
*/ |
||||||
|
|
||||||
|
var fs = require('fs') |
||||||
|
, path = require('path') |
||||||
|
, customUtils = require('./customUtils') |
||||||
|
; |
||||||
|
|
||||||
|
|
||||||
|
/** |
||||||
|
* Create a new collection |
||||||
|
*/ |
||||||
|
function Datastore (filename) { |
||||||
|
this.filename = filename; |
||||||
|
this.data = []; |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
/** |
||||||
|
* Load the database |
||||||
|
* For now this means pulling data out of the data file or creating it |
||||||
|
* if it doesn't exist |
||||||
|
* @param {Function} cb Optional callback, signature: err |
||||||
|
*/ |
||||||
|
Datastore.prototype.loadDatabase = function (cb) { |
||||||
|
var callback = cb || function () {} |
||||||
|
, self = this |
||||||
|
; |
||||||
|
|
||||||
|
customUtils.ensureDirectoryExists(path.dirname(self.filename), function (err) { |
||||||
|
fs.exists(self.filename, function (exists) { |
||||||
|
if (!exists) { |
||||||
|
self.data = []; |
||||||
|
fs.writeFile(self.filename, '', 'utf8', function (err) { return callback(err); }); |
||||||
|
} else { |
||||||
|
fs.readFile(self.filename, 'utf8', function (err, data) { |
||||||
|
if (err) { return callback(err); } |
||||||
|
self.data = data; |
||||||
|
return callback(); |
||||||
|
}); |
||||||
|
} |
||||||
|
}); |
||||||
|
}); |
||||||
|
}; |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
var d = new Datastore('workspace/test.db'); |
||||||
|
d.loadDatabase(function (err) { |
||||||
|
console.log("===="); |
||||||
|
console.log(err); |
||||||
|
console.log(d.data); |
||||||
|
}); |
||||||
|
|
||||||
|
|
Loading…
Reference in new issue