Kiểu dữ liệu tổng thể của database.
Storage driver được sử dụng để đọc và ghi dữ liệu database.
Driver phải implement interface DatabaseDriver.
Ví dụ:
const db = new Database({
driver: new JSONDriver({ filePath: "./database.json" }),
})
Cộng thêm giá trị vào một key dạng number.
Nếu key chưa tồn tại, giá trị mặc định sẽ là 0.
Key path trong database.
Đường dẫn dữ liệu dạng number.
Số cần cộng thêm.
Giá trị mới sau khi cộng.
Lấy toàn bộ dữ liệu từ database thông qua driver.
Promise chứa toàn bộ dữ liệu database.
Xóa một key khỏi database.
Hỗ trợ nested path bằng dot notation.
Path của object.
Optionalkey: AutocompletableString<P>Đường dẫn key cần xóa.
true nếu xóa thành côngfalse nếu key không tồn tạiXóa nhiều bản ghi trong một mảng dữ liệu dựa trên điều kiện truy vấn.
⚠️ Method này chỉ hoạt động với dữ liệu dạng mảng (array).
Nếu dữ liệu tại key không phải là mảng, method sẽ không thực hiện xóa
và trả về 0.
Method sẽ duyệt qua toàn bộ phần tử trong mảng và xóa những phần tử
khớp với điều kiện query.
Đường dẫn key trong object (ObjectPath<V>).
Số lượng phần tử đã bị xóa khỏi mảng.
Kiểm tra tất cả phần tử có thỏa điều kiện hay không.
Hoạt động giống Array.prototype.every.
Hàm kiểm tra điều kiện.
true nếu tất cả phần tử đều thỏa điều kiện.
Tìm index của phần tử đầu tiên thỏa điều kiện.
Hoạt động giống Array.prototype.findIndex.
Hàm kiểm tra điều kiện.
Index của phần tử hoặc -1 nếu không tìm thấy.
Tìm và trả về một bản ghi đầu tiên khớp với điều kiện trong database.
Hàm này có hai cách sử dụng:
Chỉ truyền key
→ Trả về toàn bộ dữ liệu của key (tương tự get()).
Truyền key và query
→ Tìm phần tử đầu tiên trong mảng dữ liệu của key khớp với điều kiện.
Đường dẫn key trong object (ObjectPath<V>).
key: trả về toàn bộ dữ liệu của key.query: trả về bản ghi đầu tiên khớp điều kiện.null.Lấy giá trị từ database theo key-path.
Key có thể là chuỗi dạng path:
user.profile.name
economy.users.123.balance
Nếu không truyền key, method sẽ trả về toàn bộ database.
Key path trong database.
Optionalkey: AutocompletableString<P>Đường dẫn dữ liệu cần lấy.
Giá trị tại key hoặc null nếu không tồn tại.
Kiểm tra một key-path có tồn tại trong database hay không.
Method này sử dụng get() để xác định giá trị có tồn tại.
Key path trong database.
Đường dẫn dữ liệu cần kiểm tra.
true nếu key tồn tại, ngược lại false.
Kiểm tra xem giá trị tại key có phải là Array hay không.
Path của object trong database.
Đường dẫn key cần kiểm tra.
true nếu giá trị là Array, ngược lại false.
Kiểm tra xem giá trị tại key có phải là Number hay không.
Path của object trong database.
Đường dẫn key cần kiểm tra.
true nếu giá trị là Number, ngược lại false.
Lấy danh sách các key của object trong database.
Nếu không truyền key → trả về các key cấp cao nhất của database.
Path của object.
Optionalkey: PPath của object cần lấy danh sách key.
Mảng các key tồn tại (không bao gồm null hoặc undefined).
Biến đổi tất cả giá trị trong database thành một mảng mới.
Hoạt động giống Array.prototype.map.
Kiểu dữ liệu của phần tử trả về.
Hàm transform từng phần tử.
Mảng kết quả sau khi transform.
Xóa phần tử khỏi array theo index.
Có thể truyền nhiều index hoặc một array index.
Path trỏ đến array.
Đường dẫn array.
Các index cần xóa.
Danh sách phần tử đã bị xóa.
Thêm một hoặc nhiều phần tử vào cuối array tại key-path.
Method này sẽ:
⚠️ Nếu key không tồn tại hoặc target không phải array thì sẽ ném lỗi.
Key path trong database.
Array sau khi thêm phần tử.
Lấy ngẫu nhiên một phần tử từ array tại path được chỉ định.
Path trỏ đến array trong database.
Đường dẫn đến array.
Một phần tử ngẫu nhiên trong array hoặc null nếu array rỗng.
Gán giá trị cho một key-path trong database.
Nếu key-path chưa tồn tại, các object trung gian sẽ được tự động tạo.
Key path trong database.
Giá trị vừa được set hoặc object root nếu value là object.
Kiểm tra có ít nhất một phần tử thỏa điều kiện hay không.
Hoạt động giống Array.prototype.some.
Hàm kiểm tra điều kiện.
true nếu tồn tại phần tử thỏa điều kiện.
Trừ giá trị khỏi một key dạng number.
Nếu key chưa tồn tại, giá trị mặc định sẽ là 0.
Key path trong database.
Đường dẫn dữ liệu dạng number.
Số cần trừ.
Giá trị mới sau khi trừ.
Cập nhật dữ liệu trong database theo đường dẫn key.
Hàm này sẽ tìm đến vị trí của key trong database và gán value vào đó.
Nếu value và giá trị hiện tại tại key đều là object thì sẽ thực hiện
shallow merge thay vì ghi đè toàn bộ object.
Điều này giúp tránh việc làm mất các thuộc tính đã tồn tại.
Đường dẫn key hợp lệ trong object database.
Trả về giá trị cuối cùng sau khi cập nhật.
Lấy danh sách các giá trị từ database.
Nếu không truyền key → trả về toàn bộ values ở root level.
Nếu truyền key → trả về values của object tại path đó.
Path của object trong database.
Optionalkey: PĐường dẫn object cần lấy values.
Mảng các giá trị.
Class Database cung cấp API thao tác dữ liệu dạng key-path trên nhiều loại storage khác nhau thông qua
DatabaseDriver.Đây là lớp database chính (logic layer) của hệ thống.
Class này chịu trách nhiệm:
user.profile.name)Việc lưu trữ dữ liệu thực tế sẽ được thực hiện bởi các driver phụ trợ như:
JSONDriverMemoryDriverSQLiteDriverMongoDriverCác driver này chỉ chịu trách nhiệm: