lodb
Version:
Flat JSON file database, fork of lowdb
55 lines (41 loc) • 950 B
JavaScript
var fs = require('fs')
var _ = require('lodash')
var utils = require('./utils')
function lodb(file, options) {
options = options || {}
db.stringify = options.stringify || lodb.stringify
db.parse = options.parse || lodb.parse
var obj = utils.getObject(file, db.parse)
function db(key) {
var array = obj[key] = obj[key] || []
var chain = _.chain(array)
db.save()
return chain
}
db.save = _.noop
if (file) {
if (options.async) {
db.save = function(f) {
f = f ? f : file
utils.saveAsync(file, db.stringify(obj))
}
} else {
db.save = function(f) {
f = f ? f : file
utils.saveSync(file, db.stringify(obj))
}
}
}
db.object = obj
return db
}
lodb.mixin = function(arg) {
_.mixin(arg)
}
lodb.stringify = function(obj) {
return JSON.stringify(obj, null, 2)
}
lodb.parse = function(str) {
return JSON.parse(str)
}
module.exports = lodb