Repository
Tổng quan
Trên một đối tượng Collection cho trước, có thể lấy đối tượng Repository của nó để thực hiện thao tác đọc/ghi trên bảng dữ liệu.
Truy vấn
Truy vấn cơ bản
Trên đối tượng Repository, gọi các phương thức liên quan find* để thực hiện thao tác truy vấn. Các phương thức truy vấn đều hỗ trợ truyền tham số filter để lọc dữ liệu.
Toán tử
Tham số filter trong Repository còn cung cấp nhiều toán tử để thực hiện các thao tác truy vấn đa dạng hơn.
Để biết thêm thông tin chi tiết về toán tử, vui lòng tham khảo Filter Operators.
Kiểm soát field
Khi thực hiện thao tác truy vấn, có thể kiểm soát field kết quả qua các tham số fields, except, appends.
fields: Chỉ định các field được trả về.except: Loại trừ các field không trả về.appends: Thêm các field quan hệ vào kết quả.
Truy vấn field quan hệ
Tham số filter hỗ trợ lọc theo field quan hệ, ví dụ:
Field quan hệ cũng có thể lồng nhau:
Sắp xếp
Qua tham số sort, có thể sắp xếp kết quả truy vấn.
Cũng có thể sắp xếp theo field của đối tượng quan hệ:
Tạo
Tạo cơ bản
Tạo đối tượng dữ liệu mới qua Repository.
Tạo quan hệ
Khi tạo có thể đồng thời tạo đối tượng quan hệ. Tương tự truy vấn, cũng hỗ trợ sử dụng lồng nhau với đối tượng quan hệ, ví dụ:
Nếu đối tượng quan hệ đã tồn tại trong cơ sở dữ liệu, có thể truyền ID, khi tạo sẽ thiết lập quan hệ với đối tượng quan hệ đó.
Cập nhật
Cập nhật cơ bản
Sau khi lấy được đối tượng dữ liệu, có thể trực tiếp sửa thuộc tính trên đối tượng dữ liệu (Model), sau đó gọi phương thức save để lưu sửa đổi.
Đối tượng dữ liệu Model kế thừa từ Sequelize Model, các thao tác trên Model có thể tham khảo Sequelize Model.
Cũng có thể cập nhật dữ liệu qua Repository:
Khi cập nhật, có thể kiểm soát field cập nhật qua tham số whitelist, blacklist, ví dụ:
Cập nhật field quan hệ
Khi cập nhật, có thể đặt đối tượng quan hệ, ví dụ:
Xóa
Có thể gọi phương thức destroy() trong Repository để thực hiện thao tác xóa. Khi xóa cần chỉ định điều kiện lọc:
Constructor
Thông thường nhà phát triển không gọi trực tiếp, mà chủ yếu sau khi đăng ký kiểu qua db.registerRepositories(), chỉ định kiểu repository đã đăng ký trong tham số của db.colletion() và hoàn tất khởi tạo.
Chữ ký
constructor(collection: Collection)
Ví dụ
Thành viên của instance
database
Instance quản lý cơ sở dữ liệu trong ngữ cảnh.
collection
Instance quản lý bảng dữ liệu tương ứng.
model
Lớp model dữ liệu tương ứng.
Phương thức của instance
find()
Truy vấn tập dữ liệu từ cơ sở dữ liệu, có thể chỉ định điều kiện lọc, sắp xếp, v.v.
Chữ ký
async find(options?: FindOptions): Promise<Model[]>
Kiểu
Thông tin chi tiết
filter: Filter
Điều kiện truy vấn, dùng để lọc kết quả dữ liệu. Trong tham số truy vấn được truyền vào, key là tên field cần truy vấn, value có thể là giá trị cần truy vấn, hoặc kết hợp với toán tử để lọc dữ liệu theo điều kiện khác.
Để biết thêm toán tử, vui lòng tham khảo Toán tử truy vấn.
filterByTk: TargetKey
Truy vấn dữ liệu qua TargetKey, là phương thức tắt của tham số filter. TargetKey là field nào cụ thể có thể được cấu hình trong Collection, mặc định là primaryKey.
fields: string[]
Cột truy vấn, dùng để kiểm soát field kết quả. Sau khi truyền tham số này, chỉ trả về các field được chỉ định.
except: string[]
Cột loại trừ, dùng để kiểm soát field kết quả. Sau khi truyền tham số này, các field được truyền vào sẽ không được xuất ra.
appends: string[]
Cột bổ sung, dùng để load dữ liệu quan hệ. Sau khi truyền tham số này, các field quan hệ được chỉ định sẽ được xuất cùng.
sort: string[] | string
Chỉ định cách sắp xếp kết quả truy vấn, tham số truyền vào là tên field, mặc định sắp xếp tăng dần asc. Nếu cần sắp xếp giảm dần desc, có thể thêm dấu - trước tên field, ví dụ: ['-id', 'name'] biểu thị sắp xếp theo id desc, name asc.
limit: number
Giới hạn số lượng kết quả, giống limit trong SQL.
offset: number
Offset truy vấn, giống offset trong SQL.
Ví dụ
findOne()
Truy vấn từ cơ sở dữ liệu một bản ghi đơn lẻ thỏa mãn điều kiện cụ thể. Tương đương với Model.findOne() trong Sequelize.
Chữ ký
async findOne(options?: FindOneOptions): Promise<Model | null>
Ví dụ
count()
Truy vấn từ cơ sở dữ liệu tổng số bản ghi thỏa mãn điều kiện cụ thể. Tương đương với Model.count() trong Sequelize.
Chữ ký
count(options?: CountOptions): Promise<number>
Kiểu
Ví dụ
findAndCount()
Truy vấn từ cơ sở dữ liệu tập dữ liệu thỏa mãn điều kiện cụ thể và số lượng kết quả. Tương đương với Model.findAndCountAll() trong Sequelize.
Chữ ký
async findAndCount(options?: FindAndCountOptions): Promise<[Model[], number]>
Kiểu
Thông tin chi tiết
Tham số truy vấn giống find(). Giá trị trả về là một mảng, phần tử đầu tiên là kết quả truy vấn, phần tử thứ hai là tổng số kết quả.
create()
Insert một bản ghi vừa được tạo vào bảng dữ liệu. Tương đương với Model.create() trong Sequelize. Khi đối tượng dữ liệu cần tạo mang theo thông tin field quan hệ, sẽ đồng thời tạo hoặc cập nhật bản ghi dữ liệu quan hệ tương ứng.
Chữ ký
async create<M extends Model>(options: CreateOptions): Promise<M>
Ví dụ
createMany()
Insert nhiều bản ghi vừa được tạo vào bảng dữ liệu. Tương đương với gọi nhiều lần phương thức create().
Chữ ký
createMany(options: CreateManyOptions): Promise<Model[]>
Kiểu
Thông tin chi tiết
records: Mảng đối tượng dữ liệu của các bản ghi cần tạo.transaction: Đối tượng transaction. Nếu không truyền tham số transaction, phương thức sẽ tự động tạo một transaction nội bộ.
Ví dụ
update()
Cập nhật dữ liệu trong bảng dữ liệu. Tương đương với Model.update() trong Sequelize. Khi đối tượng dữ liệu cần cập nhật mang theo thông tin field quan hệ, sẽ đồng thời tạo hoặc cập nhật bản ghi dữ liệu quan hệ tương ứng.
Chữ ký
async update<M extends Model>(options: UpdateOptions): Promise<M>
Ví dụ
destroy()
Xóa dữ liệu trong bảng dữ liệu. Tương đương với Model.destroy() trong Sequelize.
Chữ ký
async destory(options?: TargetKey | TargetKey[] | DestoryOptions): Promise<number>
Kiểu
Thông tin chi tiết
filter: Chỉ định điều kiện lọc của bản ghi cần xóa. Cách dùng chi tiết Filter có thể tham khảo phương thứcfind().filterByTk: Chỉ định điều kiện lọc của bản ghi cần xóa theo TargetKey.truncate: Có làm sạch dữ liệu bảng hay không, có hiệu lực khi không truyền tham sốfilterhoặcfilterByTk.transaction: Đối tượng transaction. Nếu không truyền tham số transaction, phương thức sẽ tự động tạo một transaction nội bộ.

