Skip to content
This repository was archived by the owner on Jan 1, 2025. It is now read-only.
/ quick.db Public archive

An easy, open-source, Node.js database designed for complete beginners getting into the concept of coding.

License

Notifications You must be signed in to change notification settings

plexidev/quick.db

Folders and files

NameName
Last commit message
Last commit date

Latest commit

2e7e176 · Oct 1, 2024
Apr 19, 2024
Oct 24, 2023
Apr 24, 2024
Jan 16, 2024
Oct 22, 2023
Apr 1, 2023
Oct 13, 2023
May 29, 2022
Jan 7, 2022
Sep 6, 2018
Jan 7, 2024
Oct 13, 2023
Oct 13, 2023
Mar 31, 2023
Oct 31, 2023
May 25, 2023
Oct 13, 2023
Oct 1, 2024
Apr 19, 2024
Oct 13, 2023
Aug 9, 2024
Apr 1, 2023
May 25, 2023
Mar 31, 2023

Repository files navigation

Quick.db Logo

Need a powerful, low-cost VPS for hosting your applications & bots 24/7? Check out our partner, Contabo! 🎉

Auto Generated Docs docs
Guide Guide
Support: discord.gg/plexidev
NPM: npmjs.com/quick.db

Quick.db is an open-source package meant to provide an easy way for beginners and people of all levels to access & store data in a low to medium volume environment. All data is stored persistently via either better-sqlite3, mysql2, pg or mongoose and comes way various other quality-of-life features.

  • Persistent Storage - Data doesn't disappear through restarts
  • Multiple Drivers - SQLite, MySQL, Postgres, Mongoose
  • Works out of the box - No need to set up a database server, all the data is stored locally in the same project
  • Beginner Friendly - Originally created for use in tutorials, the documentation is straightforward and jargon-free
  • & more...

If you want to support me

"Buy Me A Coffee"

Installation

npm i quick.db

Mac Prerequisites
1. Install XCode
2. Run `npm i -g node-gyp` in terminal
3. Run `node-gyp --python /path/to/python` in terminal

If you're having troubles installing, please follow this troubleshooting guide. Windows users may need to do additional steps listed here.

Example With Sqlite (Default driver)

NOTE: In order to use this driver, install npm i better-sqlite3 separately.

const { QuickDB } = require("quick.db");
const db = new QuickDB(); // will make a json.sqlite in the root folder
// if you want to specify a path you can do so like this
// const db = new QuickDB({ filePath: "source/to/path/test.sqlite" });

(async () => {
    // Init the database, this is always needed!
    await db.init();

    // self calling async function just to get async
    // Setting an object in the database:
    await db.set("userInfo", { difficulty: "Easy" });
    // -> { difficulty: 'Easy' }

    // Getting an object from the database:
    await db.get("userInfo");
    // -> { difficulty: 'Easy' }

    // Getting an object property from the database:
    await db.get("userInfo.difficulty");
    // -> 'Easy'

    // Setting an object in the database:
    await db.set("userInfo", { difficulty: "Easy" });
    // -> { difficulty: 'Easy' }

    // Pushing an element to an array (that doesn't exist yet) in an object:
    await db.push("userInfo.items", "Sword");
    // -> { difficulty: 'Easy', items: ['Sword'] }

    // Adding to a number (that doesn't exist yet) in an object:
    await db.add("userInfo.balance", 500);
    // -> { difficulty: 'Easy', items: ['Sword'], balance: 500 }

    // Repeating previous examples:
    await db.push("userInfo.items", "Watch");
    // -> { difficulty: 'Easy', items: ['Sword', 'Watch'], balance: 500 }
    await db.add("userInfo.balance", 500);
    // -> { difficulty: 'Easy', items: ['Sword', 'Watch'], balance: 1000 }

    // Fetching individual properties
    await db.get("userInfo.balance"); // -> 1000
    await db.get("userInfo.items"); // ['Sword', 'Watch']
})();

Example With MySQLDriver

NOTE: In order to use this driver, install npm i mysql2 separately.

const { QuickDB } = require("quick.db");
const { MySQLDriver } = require("quick.db/MySQLDriver");
(async () => {
    const mysqlDriver = new MySQLDriver({
        host: "localhost",
        user: "me",
        password: "secret",
        database: "my_db",
    });

    const db = new QuickDB({ driver: mysqlDriver });
    await db.init(); // Connects and setup the database
    // Now you can use quick.db as normal

    await db.set("userInfo", { difficulty: "Easy" });
    // -> { difficulty: 'Easy' }
})();

Example With PostgresDriver

NOTE: In order to use this driver, install npm i pg separately.

const { QuickDB } = require("quick.db");
const { PostgresDriver } = require("quick.db/PostgresDriver");
(async () => {
    const postgresDriver = new PostgresDriver({
        host: "localhost",
        user: "me",
        password: "secret",
        database: "my_db",
    });

    const db = new QuickDB({ driver: postgresDriver });
    await db.init(); // Connects and setup the database
    // Now you can use quick.db as normal

    await db.set("userInfo", { difficulty: "Easy" });
    // -> { difficulty: 'Easy' }
})();

Example With MongoDriver

NOTE: In order to use this driver, install npm i mongoose separately.

const { QuickDB } = require("quick.db");
const { MongoDriver } = require("quick.db/MongoDriver");
(async () => {
    const mongoDriver = new MongoDriver("mongodb://localhost/quickdb");

    const db = new QuickDB({ driver: mongoDriver });
    await db.init(); // Connects and setup the database
    // Now you can use quick.db as normal

    await db.set("userInfo", { difficulty: "Easy" });
    // -> { difficulty: 'Easy' }

    await mongoDriver.close();
    // disconnect from the database
})();

Example With JSONDriver

NOTE: In order to use this driver, install npm i write-file-atomic separately.

const { QuickDB } = require("quick.db");
const { JSONDriver } = require("quick.db/JSONDriver");
const jsonDriver = new JSONDriver();
const db = new QuickDB({ driver: jsonDriver });

// Init the database, this is always needed!
await db.init();
await db.set("userInfo", { difficulty: "Easy" });

Example With MemoryDriver

Note: In-memory database is not persistent and is suitable for temporary caching.

const { QuickDB } = require("quick.db");
const { MemoryDriver } = require("quick.db/MemoryDriver");
const memoryDriver = new MemoryDriver();
const db = new QuickDB({ driver: memoryDriver });

// Init the database, this is always needed!
await db.init();
await db.set("userInfo", { difficulty: "Easy" });