Một database nhẹ, typed và hỗ trợ autocomplete path cho TypeScript.
blackcat.js-databasecho phép bạn lưu trữ và truy vấn dữ liệu bằng dot notation với type inference mạnh mẽ trong IDE.
user.profile.name)Arrayfind, filter, map, ...)npm install blackcat.js-database
import { Database, JSONDriver } from "blackcat.js-database";
const db = new Database({
driver: db = new JSONDriver({
filePath: "./database.json"
})
});
type Schema = {
users: {
id: number;
name: string;
coins: number;
}[];
settings: {
prefix: string;
};
};
const db = new Database<Schema>({
driver: db = new JSONDriver({
filePath: "./database.json"
})
});
Autocomplete trong IDE:
"users"
"users.0.id"
"settings.prefix"
await db.get("users");
await db.get("settings.prefix");
Lấy toàn bộ database
await db.get();
Lấy bằng điều kiện nhất định
const data = await database.findOne("users", {
name: "username"
});
await db.has("users");
await db.set("settings.prefix", "!");
await db.update("settings.prefix", "?");
await db.delete("settings.prefix");
Xóa toàn bộ database
await db.deleteAll();
xóa bằng điều kiện nhất đinh
const data = await database.deleteMany("member.user.database", {
name: "username"
})
await db.add("users.0.coins", 10);
await db.subtract("users.0.coins", 5);
await db.push("users", {
id: 1,
name: "Alice",
coins: 0
});
Hoặc
await db.push("numbers", 1, 2, 3);
await db.pull("users", 0, {
id: 2,
name: "Bob",
coins: 10
});
await db.pop("users", 0);
Hoặc
await db.pop("users", [0, 2]);
await db.random("users");
Database hỗ trợ các method tương tự Array.
const user = await db.find((u) => u.id === 1);
const admins = await db.filter((u) => u.role === "admin");
const names = await db.map((u) => u.name);
const index = await db.findIndex((u) => u.id === 1);
await db.some((u) => u.active === true);
await db.every((u) => u.active === true);
await db.keys();
await db.keys("users");
await db.values();
await db.values("users");
await db.size();
await db.isTargetArray("users");
await db.isTargetNumber("users.0.coins");
Database sử dụng driver system để lưu trữ dữ liệu.
Driver chịu trách nhiệm:
Driver lưu dữ liệu trong RAM.
import { Database, MemoryDriver } from "blackcat.js-database";
const db = new Database({
driver: new MemoryDriver()
});
Driver lưu dữ liệu trong file json.
import { Database, JSONDriver } from "blackcat.js-database";
const database = new Database({
driver: db = new JSONDriver({
filePath: "./database.json"
})
});
Driver lưu dữ liệu trong mongoose.
import { Database, MongoDriver } from "blackcat.js-database";
const database = new Database({
driver: new MongoDriver({
mongourl: "mongourl",
databaseName: "BlackCat-Club",
collectionName: "database-test",
onLoad: ({ db, collection, databaseName }) => {
console.log(`✅ Đã kết nối với cơ sở dữ liệu: ${databaseName}`);
console.log(`📦 Bộ sưu tập: ${collection.collectionName}`);
// Ví dụ advanced:
// db.command({ ping: 1 })
},
onError: ({ error, databaseName }) => {
console.error(`❌ Không thể kết nối với cơ sở dữ liệu: ${databaseName}`);
console.error(error);
}
}),
});
Driver lưu dữ liệu trong SQLite.
import { Database, SQLiteDriver } from "blackcat.js-database";
const database = new Database({
driver: new SQLiteDriver({
filePath: "database.sqlite",
table: "json_store"
})
});
Bạn có thể tạo driver riêng bằng cách implement DatabaseDriver.
import { DatabaseDriver } from "blackcat.js-database";
class MyDriver implements DatabaseDriver {
async all() {
return {};
}
async set(data) {
}
async delete() {
}
}
Sử dụng:
const db = new Database({
driver: new MyDriver()
});
import { Database, JSONDriver } from "blackcat.js-database";
const db = new Database({
driver: db = new JSONDriver({
filePath: "./database.json"
})
});
await db.set("users", []);
await db.push("users", {
id: 1,
name: "Alice",
coins: 100
});
await db.add("users.0.coins", 50);
const user = await db.get("users.0");
console.log(user);
MIT