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.
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.
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']
})();
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' }
})();
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
})();
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" });
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" });
.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
// -> []
Generated using TypeDoc