Node Csvdb Save

nodejs database using CSV files as storage

Project README

csv-database : node.js CSV database

Lightweight CRUD database, using CSV files as a storage.

Features :

  • complete CRUD API with model validation
  • native JS objects manipulation
  • Typescript typings
  • concurrency-ready

Usage

> const db = await csvdb("users.csv", ["id","name","mail"]);

> await db.get({mail: "[email protected]"});
[ {id: 1, name: "johndoe", mail: "[email protected]"} ]

> await db.add({id: 2, name: "stevejobs", mail: "[email protected]"});

Installation

$ npm install csv-database

API Reference

csvdb(filename, model [, delimiter]) ⇒ Promise<CsvDatabase>

Returns a database, given a CSV file and its model.

  • ; as default delimiter
  • file is created if it doesn't exist
Param Type Description
filename string csv file
model string[] database model
[optional] delimiter string custom delimiter

Example

const db = await csvdb("users.csv", ["id","name","mail"], ",");

db.get([predicate]) ⇒ Promise<Object[]>

Returns database content. If given a predicate, returns data that matches its key-values pairs.

  • empty array if nothing found
  • throws an error if predicate does not match csv model
Param Type Description
[optional] predicate Object.partial search predicate

Example

> await db.get();
[
    {id: 1, name: "johndoe", mail: "[email protected]"},
    {id: 2, name: "frankmass", mail: "[email protected]"}
]

> await db.get({name: "johndoe"});
[ {id: 1, name: "johndoe", mail: "[email protected]"} ]

> await db.get({name: "stevejobs"});
[ ]

db.edit(predicate, data) ⇒ Promise<Object[]>

Edits data, given a search predicate object.

  • returns a list of edited occurences
Param Type Description
predicate Object.partial search predicate
data Object.partial data that will replace found occurences key/values

Example

> await db.edit({name: "johndoe"}, {mail: "[email protected]"});
[{1, "johndoe", "[email protected]"}]

db.add(data) ⇒ Promise<Object[]>

Adds data (single object or array) to CSV.

  • returns created occurences
Param Type Description
data Object, Object[] data to be added

Example

> await db.add({id: 3, name: "stevejobs", mail: "[email protected]"});
[{id: 3, name: "stevejobs", mail: "[email protected]"}]

db.delete(predicate) ⇒ Promise<Object[]>

Deletes all data that matches the given predicate.

  • returns deleted occurences
Param Type Description
predicate Object.partial search predicare

Example

> await db.delete({id: 1});
[ {id: 1, name: "johndoe", mail: "[email protected]"} ]

Local installation

Clone the project :

$ git clone https://github.com/ysnglt/node-csvdb

This project is made using Typescript. To generate the transpiled npm package, you need to run gulp :

$ gulp

You can run the full test suite with mocha :

$ npm i && npm run test

Open Source Agenda is not affiliated with "Node Csvdb" Project. README Source: ysnglt/node-csvdb
Stars
30
Open Issues
4
Last Commit
6 years ago
Repository
License
MIT

Open Source Agenda Badge

Open Source Agenda Rating