{"id":21461684,"url":"https://github.com/gabrieljmj/jatabase","last_synced_at":"2025-07-15T03:30:26.564Z","repository":{"id":46869089,"uuid":"44977059","full_name":"gabrieljmj/jatabase","owner":"gabrieljmj","description":":floppy_disk: JSON database.","archived":false,"fork":false,"pushed_at":"2017-03-05T23:59:04.000Z","size":46,"stargazers_count":11,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"dev","last_synced_at":"2025-07-01T20:06:23.290Z","etag":null,"topics":["database","desktop-application","json","persistence-methods"],"latest_commit_sha":null,"homepage":"https://www.npmjs.com/package/jatabase","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gabrieljmj.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-10-26T15:19:11.000Z","updated_at":"2023-08-17T19:14:48.000Z","dependencies_parsed_at":"2022-09-26T18:31:20.315Z","dependency_job_id":null,"html_url":"https://github.com/gabrieljmj/jatabase","commit_stats":null,"previous_names":[],"tags_count":11,"template":false,"template_full_name":null,"purl":"pkg:github/gabrieljmj/jatabase","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gabrieljmj%2Fjatabase","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gabrieljmj%2Fjatabase/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gabrieljmj%2Fjatabase/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gabrieljmj%2Fjatabase/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gabrieljmj","download_url":"https://codeload.github.com/gabrieljmj/jatabase/tar.gz/refs/heads/dev","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gabrieljmj%2Fjatabase/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265397504,"owners_count":23758443,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["database","desktop-application","json","persistence-methods"],"created_at":"2024-11-23T07:10:30.666Z","updated_at":"2025-07-15T03:30:26.298Z","avatar_url":"https://github.com/gabrieljmj.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"jatabase\n=========\n![](https://img.shields.io/badge/status-development-red.svg) ![](https://img.shields.io/npm/v/jatabase.svg) [![Build Status](https://travis-ci.org/gabrieljmj/jatabase.svg?branch=dev)](https://travis-ci.org/gabrieljmj/jatabase)\n\nThis is advisable when you need a local simple database without any security -- is a JSON file. **jatabase** was created for a desktop application using [electron](http://electron.atom.io/), so, is also ideal for desktop application.\n\n## Installing\n```console\n$ npm install jatabase --save\n```\n\n![](https://nodei.co/npm/jatabase.png?downloads=true\u0026downloadRank=true\u0026stars=true)\n\n## Usage\nAll the persistence methods use promises, so they have an async way of using and a sync way.\n\n* [Creating models](#creating-models) \n* [Field types](#field-types)\n* [Add](#add)\n* [Find/Find one/Find all](#findfind-onefind-all)\n* [Delete](#delete)\n* [Update](#update)\n* [Search](#search)\n* [Has method](#has-method)\n* [Associations](#associations)\n\n### Creating models\nCreate models with the method ```createModel```. This model will contain all persistence methods like ```add``` and ```delete```.\n\n```js\nconst Jatabase = require('jatabase'),\n  jb = new Jatabase(__dirname + '/file.json'),\n  productsModel = jb.createModel('products', {\n    name: {\n      type: 'string'\n    },\n    price: {\n      type: 'number'\n    },\n    categories: {\n      type: 'array'\n    },\n    description: {\n      type: 'string'\n    },\n    created_at: {\n      type: 'date'\n    }\n  });\n\nmodule.exports = models;\n```\n\n### Field types\n* ```string```\n* ```number```\n* ```array```\n* ```object```\n* ```date``` Returns a Date object\n\n### Add\n\n#### Async way\n```js\nproductsModel.add({name: 'Pear TV', price: 1280.00, categories: ['TV'], decription: 'Just a TV', created_at: new Date()}).then(success =\u003e {\n    // ...\n});\n```\n\n#### Sync way\n```js\nproductsModel.addSync({name: 'Pear TV', price: 2400.00, categories: ['TV'], decription: 'Just a TV'});\n```\n\n### Find/Find one/Find all\n\n#### Async way\n```js\n// Using ID\nproductsModel.find(3).then(product =\u003e {\n    // ...\n});\n\n// Using price\nproductsModel.find({price: 2400.00}).then(product =\u003e {\n    // ...\n});\n\n// Find one\n// Using ID\nproductsModel.findOne(3).then(product =\u003e {\n    // ...\n});\n\n// Using price\nproductsModel.findOne({price: 2400.00}).then(product =\u003e {\n    // ...\n});\n\n// Find all\nproductsModel.findAll().then(products =\u003e {\n    // ...\n});\n```\n\n#### Sync way\n```js\n// Using ID\nvar product = productsModel.findSync(3);\n\n// Using price\nvar product = productsModel.findSync({price: 2400.00});\n\n// Find one\n// Using ID\nvar product = productsModel.findOneSync(3);\n\n// Using price\nvar product = productsModel.findOneSync({price: 2400.00});\n\n// Find all\nvar products = productsModel.findAllSync();\n```\n\n### Delete\n\n#### Async way\n```js\n// Using ID\nproductsModel.delete(3).then(success =\u003e {\n    // ...\n});\n\n// Using price\nproductsModel.delete({price: 2400.00}).then(success =\u003e {\n    // ...\n});\n```\n\n#### Sync way\n```js\n// Using ID\nproductsModel.deleteSync(3);\n\n// Using price\nproductsModel.deleteSync({price: 2400.00});\n```\n\n### Update\n\n#### Async way\n```js\n// Using ID\nproductsModel.set({price: 2500.00}, 5).then(success =\u003e {\n    // ...\n});\n\n// Using name\nproductsModel.set({price: 2500.00}, {name: 'Pear TV'}).then(success =\u003e {\n    // ...\n});\n```\n\n#### Sync way\n```js\n// Using ID\nproductsModel.setSync({price: 2500.00}, 5);\n\n// Using name\nproductsModel.setSync({price: 2500.00}, {name: 'Pear TV'});\n```\n\n### Search\n\nOnly works with string fields.\n\n#### Async way\n```js\n// Using \nproductsModel.search({name: 'TV'}).then(products =\u003e {\n    // ...\n});\n\n// Case sensitive off\nproductsModel.search({name: 'TV'}, {lowerCase: true}).then(products =\u003e {\n    // ...\n});\n```\n\n#### Sync way\n```js\n// Using \nvar products = productsModel.searchSync({name: 'TV'});\n\n// Case sensitive off\nvar products = productsModel.searchSync({name: 'TV'}, {lowerCase: true});\n```\n\n### Has method\n\n#### Async way\n```js\n// Using ID\nproductsModel.has(5).then(has =\u003e {\n    // ...\n});\n\n// Using another fields\nproductsModel.has({name: 'Pear TV'}).then(has =\u003e {\n    // ...\n});\n```\n\n#### Sync way\n```js\n// Using ID\nproductsModel.hasSync(5);\n\n// Using another fields\nproductsModel.hasSync({name: 'Pear TV'});\n```\n\n### Associations\nFields can be represented by another collections. There are two kinds of associations: by foreign id or array of foreign ids.\nThis way, on a consult, all the ids will be transformed to objects.\n\n```js\nconst usersLevelsModel = jb.createModel('users_levels', {\n    name: {type: 'string'}\n  }),\n  usersModel = jb.createModel('users', {\n    name: {type: 'string'},\n    level: {\n      type: 'number',\n      associatedTo: 'users_levels'\n    }\n  });\n```\n\n# License\n[MIT License](https://github.com/gabrieljmj/jatabase/blob/dev/LICENSE.md) 2017 © Gabriel Jacinto.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgabrieljmj%2Fjatabase","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgabrieljmj%2Fjatabase","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgabrieljmj%2Fjatabase/lists"}