@zibot/db
v0.0.3
Published
ZiDB is a simple database for discord bot
Readme
@zibot/db
Một thư viện database JSON lightweight với API mô phỏng MongoDB/Mongoose để dễ dàng fallback hoặc migrate project mà không cần cài MongoDB.
Tính năng
- Không cần database server
- Lưu dữ liệu trực tiếp vào file JSON
- API gần giống MongoDB/Mongoose
- Hỗ trợ TypeScript
- Hỗ trợ update operators:
$set$inc$unset$push$pull
- Hỗ trợ:
findfindOnefindByIdcreatesaveinsertManyupdateOnefindOneAndUpdatefindOneAndDeletedeleteOnedeleteManyexistscountDocuments
- Hỗ trợ
upsert - Hỗ trợ
new: true
Cài đặt
npm install @zibot/dbKhởi tạo
const { Database, createModel } = require("@zibot/db");
const db = new Database("./database.json");
const users = createModel(db, "users");Ví dụ sử dụng
create / save
await users.create({
name: "Alice",
age: 20,
});
await users.save({
name: "Bob",
});find
const results = await users.find({
age: 20,
});
console.log(results);findOne
const user = await users.findOne({
name: "Alice",
});
console.log(user);findById
const user = await users.findById("1746867000");
console.log(user);updateOne
await users.updateOne(
{ name: "Alice" },
{
$set: {
age: 25,
},
},
);findOneAndUpdate
const updated = await users.findOneAndUpdate(
{ name: "Alice" },
{
$inc: {
coins: 100,
},
},
{
new: true,
},
);
console.log(updated);upsert
await users.updateOne(
{
name: "Unknown",
},
{
$set: {
age: 18,
},
},
{
upsert: true,
},
);deleteOne
await users.deleteOne({
name: "Alice",
});deleteMany
await users.deleteMany({
banned: true,
});findOneAndDelete
const deleted = await users.findOneAndDelete({
name: "Bob",
});
console.log(deleted);insertMany
await users.insertMany([
{
name: "A",
},
{
name: "B",
},
]);exists
const exists = await users.exists({
name: "Alice",
});
console.log(exists);countDocuments
const total = await users.countDocuments({
verified: true,
});
console.log(total);Update Operators
$set
await users.updateOne(
{ name: "Alice" },
{
$set: {
age: 30,
},
},
);$inc
await users.updateOne(
{ name: "Alice" },
{
$inc: {
coins: 50,
},
},
);$unset
await users.updateOne(
{ name: "Alice" },
{
$unset: {
tempField: true,
},
},
);$push
await users.updateOne(
{ name: "Alice" },
{
$push: {
tags: "admin",
},
},
);$pull
await users.updateOne(
{ name: "Alice" },
{
$pull: {
tags: "admin",
},
},
);TypeScript
import { Database, createModel } from "@zibot/db";
interface User {
_id?: string;
name: string;
age: number;
coins: number;
tags: string[];
}
const db = new Database("./database.json");
const users = createModel<User>(db, "users");
await users.updateOne(
{ name: "Alice" },
{
$inc: {
coins: 100,
},
},
);API
Database
Constructor
new Database(path?: string)Methods
| Method | Description |
| -------------------- | ---------------------- |
| create() | Tạo document |
| save() | Lưu document |
| insertMany() | Thêm nhiều document |
| find() | Tìm nhiều document |
| findOne() | Tìm một document |
| findById() | Tìm theo _id |
| updateOne() | Update document |
| findOneAndUpdate() | Update và trả document |
| findOneAndDelete() | Xóa và trả document |
| deleteOne() | Xóa một document |
| deleteMany() | Xóa nhiều document |
| exists() | Kiểm tra tồn tại |
| countDocuments() | Đếm document |
Mục tiêu thư viện
@zibot/db được thiết kế cho:
- Discord bots
- Local projects
- Lightweight apps
- Fallback database
- Development/testing
- Offline storage
- Small APIs
Không phù hợp cho:
- Dữ liệu cực lớn
- Concurrent write cực cao
- Multi-server production
License
MIT
