
Security News
Axios Supply Chain Attack Reaches OpenAI macOS Signing Pipeline, Forces Certificate Rotation
OpenAI rotated macOS signing certificates after a malicious Axios package reached its CI pipeline in a broader software supply chain attack.
A Lightweight Disk based JSON Database with a MongoDB like API for Node.
##Contents
Install the module locally :
$ npm install uberdb
var db = require('uberdb');
db = db.connect('/path/to/db-folder', ['collection-name']);
// you can access the traditional JSON DB methods here
db.connect(pathToFolder, ['filename']);
Filename will be the name of the JSON file. You can omit the extension, uberDB will take care of it for you.
var db = require('uberdb');
db = db.connect('/examples/db', ['articles']);
// or simply
db.connect('/examples/db', ['articles']);
This will check for a directory at given path, if it does not exits, uberDB will throw an error and exit.
If the directory exists but the file/collection does not exist, uberDB will create it for you.
Note : If you have manually created an empty JSON file, please make sure that it contains at least an empty array.
[]
Else it will throw an error like
undefined:0
^
SyntaxError: Unexpected end of input
Alternatively you can also load collections like
var db = require('uberdb');
// this
db = db.connect('/examples/db');
db.loadCollections(['articles']);
//or
db.connect('/examples/db');
db.loadCollections(['articles']);
//or
db.connect('/examples/db')
.loadCollections(['articles']);
//or
db.connect('/examples/db', ['articles']);
var db = require('uberdb');
db.connect('/examples/db', ['articles','comments','users']);
db.collectioName.save(object);
Once you have loaded a collection, you can access the collection's methods using the dot notation like
db.[collectionName].[methodname]
To save the data, you can use
var db = require('uberdb');
db.connect('db', ['articles']);
var article = {
title : "uberDB rocks",
published : "today",
rating : "5 stars"
}
db.articles.save(article);
// or
db.articles.save([article]);
The saved data will be
[
{
"title": "uberDB rocks",
"published": "today",
"rating": "5 stars",
"_id": "0f6047c6c69149f0be0c8f5943be91be"
}
]
You can also save multiple objects at once like
var db = require('uberdb');
db.connect('db', ['articles']);
var article1 = {
title : 'uberDB rocks',
published : 'today',
rating : '5 stars'
}
var article2 = {
title : 'uberDB rocks',
published : 'yesterday',
rating : '5 stars'
}
var article3 = {
title : 'uberDB rocks',
published : 'today',
rating : '4 stars'
}
db.articles.save([article1, article2, article3]);
And this will return the inserted objects
[ { title: 'uberDB rocks',
published: 'today',
rating: '4 stars',
_id: 'b1cdbb3525b84e8c822fc78896d0ca7b' },
{ title: 'uberDB rocks',
published: 'yesterday',
rating: '5 stars',
_id: '42997c62e1714e9f9d88bf3b87901f3b' },
{ title: 'uberDB rocks',
published: 'today',
rating: '5 stars',
_id: '4ca1c1597ddc4020bc41b4418e7a568e' } ]
There are 2 methods available for reading the JSON collection
var db = require('uberdb');
db.connect('/examples/db', ['articles']);
db.articles.find();
This will return all the records
[{
title: 'uberDB rocks',
published: 'today',
rating: '5 stars',
_id: '0f6047c6c69149f0be0c8f5943be91be'
}]
You can also query with a criteria like
var db = require('uberdb');
db.connect('/examples/db', ['articles']);
db.articles.find({rating : "5 stars"});
This will return all the articles which have a rating of 5.
Nested JSON :
var articleComments = {
title: 'uberDB rocks',
published: '2 days ago',
comments: [{
name: 'a user',
comment: 'this is cool',
rating: 2
}, {
name: 'b user',
comment: 'this is ratchet',
rating: 3
}, {
name: 'c user',
comment: 'this is awesome',
rating: 2
}]
}
var savedArticle = db.articles.save([articleComments);
foundArticles = db.articles.find({rating : 2});
Since uberDB is mostly for light weight data storage, avoid nested structures and huge datasets.
var db = require('uberdb');
db.connect('/examples/db', ['articles']);
db.articles.findOne();
If you do not pass a query, uberDB will return the first article in the collection. If you pass a query, it will return first article in the filtered data.
var db = require('uberdb');
db.connect('/examples/db', ['articles']);
db.articles.findOne({_id: '0f6047c6c69149f0be0c8f5943be91be'});
db.collectioName.update(query, data, options);
You can also update one or many objects in the collection
options = {
multi: false, // update multiple - default false
upsert: false // if object is not found, add it (update-insert) - default false
}
Usage
var db = require('uberdb');
db.connect('/examples/db', ['articles']);
var query = {
title : 'uberDB rocks'
};
var dataToBeUpdate = {
title : 'uberDB rocks again!',
};
var options = {
multi: false,
upsert: false
};
var updated = db.articles.update(query, dataToBeUpdate, options);
console.log(updated); // { updated: 1, inserted: 0 }
db.collectioName.remove(query, multi);
You can remove the entire collection (including the file) or you can remove the matched objects by passing in a query. When you pass a query, you can either delete all the matched objects or only the first one by passing multi as false. The default value of multi is true.
var db = require('uberdb');
db.connect('/examples/db', ['articles']);
db.articles.remove({rating : "5 stars"});
var db = require('uberdb');
db.connect('/examples/db', ['articles']);
db.articles.remove({rating : "5 stars"}, true); // remove all matched. Default - multi = true
var db = require('uberdb');
db.connect('/examples/db', ['articles']);
db.articles.remove({rating : "5 stars"}, false); // remove only the first match
Using remove without any params will delete the file and will remove the db instance.
var db = require('uberdb');
db.connect('/examples/db', ['articles']);
db.articles.remove();
After the above operation db.articles is undefined.
db.collectioName.count();
Will return the count of objects in the Collection
var db = require('uberdb');
db.connect('/examples/db', ['articles']);
db.articles.count(); // will give the count
Refer to the examples folder.
Copyright (c) 2015 Roger Stringer. Licensed under the MIT license.
FAQs
A Light Weight Disk based JSON Database with a MongoDB like API
We found that uberdb demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
OpenAI rotated macOS signing certificates after a malicious Axios package reached its CI pipeline in a broader software supply chain attack.

Security News
Open source is under attack because of how much value it creates. It has been the foundation of every major software innovation for the last three decades. This is not the time to walk away from it.

Security News
Socket CEO Feross Aboukhadijeh breaks down how North Korea hijacked Axios and what it means for the future of software supply chain security.