small-db

    1.1.1 • Public • Published

    Small-db

    Small-db is a database useful when you would have to keep small information persistent on the server.

    Installing

    	npm install small-db
    

    Use-cases

    A good example would be a news section on a basic website. Using this module you could easily add, remove, modify and show the information without really worrying about running out of space or the program slowing down.# How it works

    How it works

    The databased is loaded on RAM and after the necessary operations have been made, it can be stored on disk with the commit() method. This makes it fast but it’s impractical to handle big data with it. All the information is saved in a JSON file which has its limitations.

    ## Terminology

    There are collections which have documents in them. The collection is a way to group your documents, it can be seen as an RDBS table. Each document has a unique id that can be used to reference it.# Guide

    Importing the Database

    	const  DataBase = require('small-db');
    

    Creating or opening a collection

    	let  clientsColection = new DataBase().collection('clients.json');
    

    Seeing the documents (returns the map of the documents)

    	clientsColection.documents;
    

    Adding a document (returns the id of the document created)

    	let id = clientsColection.addDocument({a : "b"});
    

    Removing a document (return true if the document could be removed)

    	clientsColection.removeDocument(id);
    

    Checking if the id exist

    	clientsColection.has(id);
    

    Updating a document (if the id doesn't exist it creates one)

    	clientsColection.updateDocument(id,{ c : "d"});
    

    Writing the collection on the disk

    	clientsColection.commit();
    

    Querying "." is reserved for traversing the json object

    	clientsColection.addDocument({a :{b : "c"}});
    	clientsColection.where("a.b == c");	
    

    Where function ( returns a query object)

    	clientsColection.where("name == George").where("age > 25");
    	clientsColection.where("number.mobile == 000");
    

    Remove documents

    	clientsColection.where("age >=50").remove();
    

    Update documents

    	clientsColection.where("age > 18").update("prefix",(data)=>{
    		if(data["sex"]="M")
    			return "Mr";
    		return "Mrs";
    	});
    

    Sorting the documents

    	clientsColection.where("salary < 500").sortBy('age');
    	// or if we want to specify the direction (by default is 'asc')
    	clientsColection.where("salary < 500").sortBy('age','desc');
    

    Getting the first documents with limit method

    	clientsColection.where("age > 18").limit(10);	
    

    Getting the number of clients that are underaged

    	clientsColection.where("age < 18").size;
    

    Values method returnes the documents values as an array

    	for(val of clientsColection.values){ 
    		console.log(val) 
    		}
    

    Keys returnes the documents keys

    	for(val of clientsColection.keys){
    		 console.log(val) 
    	 }
    

    Usage

    npm install small-db
    

    Each collection function generates or works with an unique id, addDocument returns and id, removeDocument and updateDocument takes in an id. When working with a query the id is not needed.

    A simple example showing a tipical usecase for populating and interogating the database.

    let  clientsColection = new DataBase().collection('clients.json');
    
    clientsColection.addDocument({ "first-name":  "Jhon",
    								"last-name" :  "Lake",
    								age :  "18",
    								contacts : { mobilePhone :  12345,
    								homePhone :  23456
    							} });
    clientsColection.addDocument({ "first-name":  "Kayle",
    								"last-name" :  "Martin",
    								age :  "25",
    								contacts : { mobilePhone :  98765,
    								homePhone :  87654
    							} });
    clientsColection.addDocument({ "first-name":  "Don",
    								"last-name" :  "Dibble",
    								age :  "30",
    								contacts : { mobilePhone :  99999,
    								homePhone :  89999
    							} });
    
    /* The first where statment would have returned 2 results, but
    because we further searched for a specific mobile number, only the
    last object remains, so the update changes the last object first
    name from Don to Ned. */
    clientsColection.where("age > 20")
    				.where("contacts.mobilePhone == 99999")
    				.update("first-name", (obj) => {return  "Ned";});
    
    //Displaying all the collection documents
    for(val  of  clientsColection.values){
    	console.log(val)
    }
    
    //Displaying information based on query
    for(val  of  clientsColection.where("age > 0").sortBy("age").values){
    	console.log(val);
    }
    
    //This removes documents form a collection based on a query
    clientsColection.where("first-name == Jhon").remove();
    
     
    //But we can remove the keys directly from the collection if we want to
    for(key  of  clientsColection.where("first-name == Kayle").keys){
    	clientsColection.removeDocument(key);
    }
    
    clientsColection.commit();
    

    Keywords

    none

    Install

    npm i small-db

    DownloadsWeekly Downloads

    3

    Version

    1.1.1

    License

    ISC

    Unpacked Size

    25.8 kB

    Total Files

    6

    Last publish

    Collaborators

    • silviuilas