Sign inDemoInstall


Package Overview
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies



A simple, lightweight, synchronous, database for Node.js powered by JSON.

Version published
Weekly downloads
decreased by-22.44%
Weekly downloads



💿 File System DB 💿

license version gzipped size downloads last commit

discord buy me a coffee

Please Note: This package saves data persistently. This means that this will not work on places like Heroku and similar services.

v2 Migration: If you are migrating from v1 to v2, consider reading the detailed changes on this pull request.


  • 📦 Works Out of the Box | Only two lines of code are required to set up and start using your own database.

  • 🤹‍♂️ Unlimited Databases | You can create as many databases as you want, whenever you want.

  • 🗃️ Saved as JSON Files | This package uses JSON files to act as databases, so you can easily understand, edit and backup/export the data.

  • 📝 Key-Value Based | Designed with beginners in mind, so you can store any type of data in your database with ease.

  • 📔 Dot Notation Support | You can use dot notation to store and retrieve JSON fields and data.

  • ⚡ Fast and Synchronous | All operations are synchronous, so saving and retrieving data takes less than few milliseconds.

  • 🚫 No Dependencies | This package is built on top of the File System module built into Node.js, making the package size very small.

Install Package

File System DB's size footprint is tiny, making the installation process really quick and easy.

npm install file-system-db --save

Setup and Usage

To set up your database, you only need to write two lines of code.

First of all, let's import the package.

const { FSDB } = require("file-system-db");

Now for the fun part, let's create a database. Creating one only takes a single line of code, and the best part is you can make as many as you want! You don't need to worry about making sure the JSON file and directory path exists, as FSDB can handle that for you.

It's as simple as creating a variable and assigning it to a new FSDB instance.

const db = new FSDB();

There are also two optional parameters that can be passed to the constructor:

  • path - The file path to the JSON file that will act as the database. (defaults to "database.json")
  • compact - This determines whether the database should be compacted after every save. This won't look easily readable to humans, but it will save you unnecessary storage space. (defaults to true)


// Creates a database at `./db.json` and don't compact it
const db = new FSDB("./db.json", false);

If at any point you want to backup your database in the case of having to undo something later, you can use db.backup(). Simply pass the path to the file you want to save the backup to. Please note that all backups are saved with compact set to true to save space.

// Saves the current contents of the database to `"./db-backup.json"`

Here are some examples of how to use the database.

// Saves the JSON: `{ "player": "WillTDA" }`
db.set("player", "WillTDA");

// => "WillTDA"

You can also use dot notation to store and retrieve JSON data.

// Saves the JSON: `{ "player": { "name": "WillTDA", "level": 15 } }`
db.set("", "WillTDA");
db.set("player.level", 15);

// Alternatively, using an object as the value will also work
db.set("player", { name: "WillTDA", level: 15 });

// => { "name": "WillTDA", "level": 15 }

You can get all data in the database with db.getAll().

// => [{ "key": "player", "value": { "name": "WillTDA", "level": 15 } }]

To get all data starting with a certain key, you can use db.startsWith().

// => [{ "key": "", "value": "WillTDA" }, { "key": "player.level", "value": 15 }]

To see if a key exists, use db.has().

// => true

To delete data, you can use db.delete().

// Saves the JSON: `{ "player": { "name": "WillTDA" } }`

You can delete all data in the database with db.deleteAll().

// Saves the JSON: `{}`

Pushing and pulling data on arrays is also supported.

// Saves the JSON: `{ "inventory": [ "Diamond Sword", "Diamond Pickaxe" ] }`
db.push("inventory", "Diamond Sword");
db.push("inventory", "Diamond Pickaxe");

// Saves the JSON: `{ "inventory": [ "Diamond Sword" ] }`
db.pull("inventory", "Diamond Pickaxe");

// Alternatively, you can also pass multiple values to these methods
// Saves the JSON: `{ "inventory": [ "Diamond Sword", "Diamond Pickaxe" ] }`
db.push("inventory", "Diamond Sword", "Diamond Pickaxe");

// Saves the JSON: `{ "inventory": [] }`
db.pull("inventory", "Diamond Sword", "Diamond Pickaxe");

Mathematical operations on numbers can also be done.

// Saves the JSON: `{ "coins": 500 }`
db.add("coins", 500);

// Saves the JSON: `{ "coins": 400 }`
db.subtract("coins", 100);

// Saves the JSON: `{ "coins": 800 }`
db.multiply("coins", 2);

// Saves the JSON: `{ "coins": 200 }`
db.divide("coins", 4);

Contact Us

Created and maintained by Diamond Digital Development Logo



Last updated on 27 Apr 2024

Did you know?


Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.


Related posts

SocketSocket SOC 2 Logo


  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap


Stay in touch

Get open source security insights delivered straight into your inbox.

  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc