Able to insert doca

pull/2/head
Louis Chatriot 12 years ago
parent cb42b85f53
commit fa2580eefb
  1. 6
      lib/customUtils.js
  2. 34
      lib/datastore.js

@ -21,7 +21,10 @@ function ensureDirectoryExists (dir, cb) {
/**
* Return a random string of length len
* Return a random alphanumerical string of length len
* There is a very small probability for the length to be less than len
* (il the base64 conversion yields to many pluses and slashes) but
* that's not an issue here
*/
function uid (len) {
return crypto.randomBytes(Math.ceil(len * 5 / 4))
@ -30,7 +33,6 @@ function uid (len) {
.slice(0, len);
}
console.log(uid(5));
module.exports.ensureDirectoryExists = ensureDirectoryExists;

@ -1,5 +1,7 @@
/**
* The datastore itself
* TODO
* Improve serialization (for types such as Dates, handle new lines in strings)
*/
var fs = require('fs')
@ -67,9 +69,41 @@ Datastore.treatRawData = function (rawData) {
};
/**
* Insert a new document
* @param {Function} cb Optional callback, signature: err, insertedDoc
*/
Datastore.prototype.insert = function (newDoc, cb) {
var callback = cb || function () {}
, self = this
, persistableNewDoc
;
try {
newDoc._id = customUtils.uid(16);
persistableNewDoc = JSON.stringify(newDoc);
} catch (e) {
return callback(e);
}
fs.appendFile(self.filename, persistableNewDoc + '\n', 'utf8', function (err) {
if (err) { return callback(err); }
var insertedDoc = JSON.parse(persistableNewDoc);
self.data.push(insertedDoc); // Make sure the doc is the same on the disk and in memory
// Some docs can't be stringified correctly
return callback(null, insertedDoc);
});
};
var d = new Datastore('workspace/test.db');
d.loadDatabase(function (err) {
d.insert({ onetest: "oh yeah" }, function (err, insertedDoc) {
console.log(err);
console.log("===============");
console.log(insertedDoc);
});
});

Loading…
Cancel
Save