csv-database
v0.9.2
Published
lightweight CSV database
Downloads
86
Maintainers
Readme
csv-database : node.js CSV database
Lightweight CRUD database, using CSV as storage. Powered by Typescript + async/await.
Features :
- complete CRUD API with model validation
- native JS object requests
- 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
