prhone-mdb

2.0.2 • Public • Published

PRHONE MDB

npm version Build Status prhone

PRHONE Mini-DataBase.

Mini-database manager using Node file system API in a relational way for simple storing or for practicing Node web servers without using a real DBMS.

  • Promises are used to handle operations.
  • Uses a JSON file to store the data.
  • All data is stored in tables.
  • The identifier of each item in each table is an UUID v4 and its name is id.
  • UTF8 is used for encoding.
  • When creating a new item:
    • If table does not exists, it's created automatically.
  • When getting:
    • Returns an empty array if table is not found.
    • But error if fetching an unique item and it's not found.
  • When removing:
    • If item does not exists, will be ok.
  • In all cases, if JSON file is corrupt, an error will be returned.

Install

npm install --save prhone-mdb

Use

__dirname/database.json

Empty file.

__dirname/app.js

const MDB = require('prhone-mdb');
 
const db = new MDB(`${__dirname}/database.json`);
 
// Creates a new collection called `fruits` and create a new item within.
db.create('fruits', { name: 'apple', color: 'red' }).then(fruit => {
  console.log('New fruit:', fruit);
  // { id: 'c846482b-7dbe-4ee3-866c-e3cc06463cd2', name: 'apple', color: 'red' }
}, err => {
  console.log('Error:', err);  // If an error occurs.
});
 
// Create a new item in fruits collection.
db.create('fruits', { name: 'lemon', color: 'yellow' }).then(fruit => {
  console.log('New fruit:', fruit);
  // { id: '667ba0fd-dfc0-48aa-b8ab-17cd1fc5d48f', name: 'lemon', color: 'yellow' }
}, err => {
  console.log('Error:', err);
});
 
db.getById('fruits', 'c846482b-7dbe-4ee3-866c-e3cc06463cd2').then(fruit => {
  console.log('Fruit:', fruit);
  // { id: 'c846482b-7dbe-4ee3-866c-e3cc06463cd2', name: 'apple', color: 'red' }
});
 
db.
  updateById('fruits', 'c846482b-7dbe-4ee3-866c-e3cc06463cd2', { color: 'green' }).
  then(fruit => {
    console.log('Modified fruit:', fruit);
    // { id: 'c846482b-7dbe-4ee3-866c-e3cc06463cd2', name: 'apple', color: 'green' }
  });
 
db.getById('fruits', 'c846482b-7dbe-4ee3-866c-e3cc06463cd2').then(fruit => {
  console.log('Fruit:', fruit);
  // { id: 'c846482b-7dbe-4ee3-866c-e3cc06463cd2', name: 'apple', color: 'green' }
});

API

db MDB(String filePath)

  • String filePath the absolute path to a JSON file where to store the data.

Promise db.create(String tableName, Object item)

  • String tableName The table name. Even if it does not exist.
  • Object item The new item to create in the table.

.then(function (Object item) {})

  • Object item The new item created.

Promise db.getById(String tableName, String itemId)

  • String tableName The table name.
  • String itemId The item id.

.then(function (Object item) {})

  • Object item The item fetched.

Promise db.getAll(String tableName)

  • String tableName The table name.

.then(function (Array items) {})

  • Array items The collection of all items. If table did not exist, it is an empty array.

Promise db.updateById(String tableName, String itemId, Object data)

  • String tableName The table name.
  • String itemId The item id.
  • Object data The new data of the item. This will be merged.

.then(function (Object item) {})

  • Object item The item updated.

Promise db.removeById(String tableName, String itemId, Object data)

  • String tableName The table name.
  • String itemId The item id.

.then(function () {})

The promise will not give parameters.

License

MIT

Package Sidebar

Install

npm i prhone-mdb

Weekly Downloads

1

Version

2.0.2

License

MIT

Last publish

Collaborators

  • romelperez