@abibv/kval-dstore

A simple file based key-value data store that supports basic CRUD operations in nodejs.

Usage no npm install needed!

<script type="module">
  import abibvKvalDstore from 'https://cdn.skypack.dev/@abibv/kval-dstore';
</script>

README

kval-dstore

A simple file based key-value data store that supports basic CRUD operations in nodejs.

It creates a json file that can be used as a key-value database for learning purpose or even for micro-apps.

It provides five different API for accessing the key-value data store.

Initializing data store

new dstore(filename [,sizeLimit, initData]);

  • filename (String) - The file name with its path for the json file.
  • [optional] sizeLimit (String) - Specifies the sizeLimit in MegaByte (default is 1024 MB)
  • [optional] initData (JSON object) - Initial data to be stored at the time of file creation (default is empty json object {})
const dstore = require('@abibv/kval-dstore');

const store = new dstore('./dstore.json');
(or)
const store = new dstore(__dirname + '/dstore.json');

Write the data

store.write(object [,path]);

  • object (JSON object) - Data to be stored.
  • [optional] path (string) - Key path where the data should be placed (should be referred from the root) (default is the root of the json data '/')

write is an Asynchronous method which returns nothing.

var object = {
  name: 'myname',
  no: 123456789,
  timeSpent: {
    tech: '50%',
    music: '30%',
    sleep: '20%',
  }
};


//Write the data at the root

store.write(object)
  .then(() => { console.log('data written'); })
  .catch((error) => { console.log(error); });


//Write the data at the specified 

store.write(object, '/department/year/students/')
  .then(() => { console.log('data written'); })
  .catch((error) => { console.log(error); });

Read the data

store.read([path]);

  • [optional] path (String) - JSON key path from where the data should be read. (default is root '/')

If the path is not specified, then the whole data was read.

read is an Asynchronous method which returns the data read.

store.read('/department/year/students/')
  .then((data) => { console.log(data); })
  .catch((error) => { console.log(error); });

Update the data

store.update(data, key [,path]);

  • data (any) - data to be updated.
  • key (String) - JSON key whose value should be replaced (must be a Single key string).
  • [optional] path (String) - path of the key in the JSON object referred from the root '/'.

update is an Asynchronous method which returns nothing.

store.update({ misc: '10%' }, '/timeSpent')
  .then(() => { console.log('updated'); })
  .catch((err) => { console.log(err); });

Delete a Data

store.delete([path])

  • [optional] path (String path) - JSON key path from where the key-value pair should be deleted (default is root '/')

If no path is specified, then the whole data store with the file will be deleted

delete is an Asynchronous method which returns nothing.

store.delete('/timeSpent')
  .then(() => { console.log('timeSpent object deleted'); })
  .catch((error) => { console.log(error); });

Calculate data store size

store.calcFileSize()

calcFileSize is an Synchronous method which returns the size of the data store file in MegaBytes.

 console.log(store.calcFileSize());