9.1.7 • Published 9 months ago

quick.db v9.1.7

Weekly downloads
74,417
License
MIT
Repository
github
Last release
9 months ago

Quick.db Logo

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

Documentation: quickdb.js.org [Migration 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 or mysql2 and comes way various other quality-of-life features.

  • Persistent Storage - Data doesn't disappear through restarts
  • Multiple Drivers - You can use either better-sqlite3 or mysql2
  • 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...

Installation

1. Install XCode
2. Run `npm i -g node-gyp` in terminal
3. Run `node-gyp --python /path/to/python` in terminal
npm i quick.db better-sqlite3   # (Default) Local SQLite3 File
npm i quick.db mysql2    # (Alternative) MySQL Server Connection

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

Example

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 () => {
    // 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, MySQLDriver } = require("quick.db");
(async () => {
    const mysqlDriver = new MySQLDriver({
        host: "localhost",
        user: "me",
        password: "secret",
        database: "my_db",
    });

    await mysqlDriver.connect(); // connect to the database **this is important**

    const db = new QuickDB({ driver: mysqlDriver });
    // 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, MongoDriver } = require("quick.db");
(async () => {
    const mongoDriver = new MongoDriver("mongodb://localhost/quickdb");

    await mongoDriver.connect();

    const db = new QuickDB({ driver: mongoDriver });
    // Now you can use quick.db as normal

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

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

Example With JSONDriver

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

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

await db.set("userInfo", { difficulty: "Easy" });

Example With MemoryDriver

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

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

await db.set("userInfo", { difficulty: "Easy" });

Changes in 9.0.x

  • Added two new database options: driver and filePath
    • By default, the Sqlite driver is used. Although, you can use the MySQL driver by looking at the example above. More drivers are planned for the future, feel free to submit a pull request as well.
  • Added .deleteAll() method
  • Added .pull() method (see below)
  • Changed all methods to use async/await
    • This is because some drivers, such as MySQL, need to use await. Using async/await globally adds code consistency throughout drivers.
  • Changed QuickDB into a class
    • This changes how the database is initialized, read the migration guide for more information.
  • Renamed the .subtract() method to .sub() to match the length of .add()
  • General bug fixes
    • A notable one includes storing numbers as strings in the database now working as intended.

.pull()

await db.set("myArray", [
    "axe",
    "sword",
    "shield",
    "health_potion",
    "mana_potion",
]);

await db.pull("myArray", "axe"); // Removing a single item
// -> ['sword', 'shield', 'health_potion', 'mana_potion']

await db.pull("myArray", ["sword", "shield"]); // Removing multiple options
// -> ['health_potion', 'mana_potion']

await db.pull("myArray", (i) => i.includes("potion")); // Using a function
// -> []
9.1.7

9 months ago

9.1.6

12 months ago

9.1.5

12 months ago

9.0.9

1 year ago

9.0.10

1 year ago

9.1.4

12 months ago

9.1.3

1 year ago

9.1.2

1 year ago

9.1.1

1 year ago

9.1.0

1 year ago

9.0.8

1 year ago

9.0.7

1 year ago

9.0.6

2 years ago

9.0.5

2 years ago

9.0.4

2 years ago

9.0.3

2 years ago

9.0.2

2 years ago

9.0.1

2 years ago

9.0.0

2 years ago

7.1.3

3 years ago

7.1.2

4 years ago

7.1.1

4 years ago

7.1.0

4 years ago

7.0.0-b22

5 years ago

7.0.0-b21

5 years ago

7.0.0-b20

5 years ago

7.0.0-b19

5 years ago

7.0.0-b18

5 years ago

7.0.0-b17

5 years ago

7.0.0-b16

5 years ago

7.0.0-b15

6 years ago

7.0.0-b14

6 years ago

7.0.0-b13

6 years ago

7.0.0-b12

6 years ago

7.0.0-b11

6 years ago

7.0.0-b10

6 years ago

7.0.0-b9

6 years ago

7.0.0-b8

6 years ago

7.0.0-b7

6 years ago

7.0.0-b5

6 years ago

7.0.0-b4

6 years ago

7.0.0-b3

6 years ago

7.0.0-b2

6 years ago

7.0.0-b1

6 years ago

6.3.2

6 years ago

6.3.1

6 years ago

6.3.0

6 years ago

6.2.2

6 years ago

6.2.1

6 years ago

6.2.0

6 years ago

6.1.5

6 years ago

6.1.4

6 years ago

6.1.3

6 years ago

6.1.2

6 years ago

6.1.1

6 years ago

6.1.0

6 years ago

6.0.6

6 years ago

6.0.5

6 years ago

6.0.4

6 years ago

6.0.3

6 years ago

6.0.2

6 years ago

6.0.1

6 years ago

6.0.0

6 years ago

5.5.1

6 years ago

5.5.0

6 years ago

5.4.13

6 years ago

5.4.12

6 years ago

5.4.11

6 years ago

5.4.10

6 years ago

5.4.9

6 years ago

5.4.8

6 years ago

5.4.7

6 years ago

5.4.6

6 years ago

5.4.5

6 years ago

5.4.4

6 years ago

5.4.3

6 years ago

5.4.2

6 years ago

5.4.1

6 years ago

5.4.0

6 years ago

5.3.8

6 years ago

5.3.7

6 years ago

5.3.6

6 years ago

5.3.5

6 years ago

5.3.4

6 years ago

5.3.3

6 years ago

5.3.2

6 years ago

5.3.1

6 years ago

5.3.0

6 years ago

5.2.3

6 years ago

5.2.2

6 years ago

5.2.1

6 years ago

5.2.0

6 years ago

5.1.4

6 years ago

5.1.2

6 years ago

5.1.1

6 years ago

5.1.0

6 years ago

5.0.5

6 years ago

5.0.4

6 years ago

5.0.3

6 years ago

5.0.2

6 years ago

5.0.1

6 years ago

5.0.0

6 years ago

4.10.0

6 years ago

4.9.10

6 years ago

4.9.9

6 years ago

4.1.0

6 years ago

4.0.2

6 years ago

4.0.1

6 years ago

4.0.0

6 years ago

3.0.3

6 years ago

3.0.2

6 years ago

3.0.1

6 years ago

3.0.0

6 years ago

2.1.6

6 years ago

2.1.5

6 years ago

2.1.4

6 years ago

2.1.3

6 years ago

2.1.2

6 years ago

2.1.1

6 years ago

2.1.0

6 years ago

2.0.13

6 years ago

2.0.12

6 years ago

2.0.11

6 years ago

2.0.10

6 years ago

2.0.9

6 years ago

2.0.8

6 years ago

2.0.7

6 years ago

2.0.6

6 years ago

2.0.5

6 years ago

2.0.4

6 years ago

2.0.3

6 years ago

2.0.2

6 years ago

2.0.1

6 years ago

2.0.0

6 years ago

1.0.10

6 years ago

1.0.9

6 years ago

1.0.8

6 years ago

1.0.7

6 years ago

1.0.6

6 years ago

1.0.5

6 years ago

1.0.4

6 years ago

1.0.3

6 years ago

1.0.2

6 years ago

1.0.1

6 years ago

1.0.0

6 years ago