Tài liệu này được dịch bởi AI. Đối với bất kỳ thông tin không chính xác nào, vui lòng tham khảo phiên bản tiếng Anh
Trên một đối tượng bộ sưu tập nhất định, bạn có thể lấy đối tượng Repository của nó để thực hiện các thao tác đọc và ghi trên bảng dữ liệu.
Trên đối tượng Repository, bạn có thể gọi các phương thức liên quan đến find* để thực hiện các thao tác truy vấn. Tất cả các phương thức truy vấn đều hỗ trợ truyền tham số filter để lọc dữ liệu.
Tham số filter trong Repository còn cung cấp nhiều toán tử khác nhau để thực hiện các thao tác truy vấn đa dạng hơn.
Để biết thêm chi tiết về các toán tử, vui lòng tham khảo Toán tử lọc.
Khi thực hiện thao tác truy vấn, bạn có thể kiểm soát các trường dữ liệu đầu ra thông qua các tham số fields, except và appends.
fields: Chỉ định các trường dữ liệu đầu raexcept: Loại trừ các trường dữ liệu đầu raappends: Thêm các trường dữ liệu liên kết vào đầu raTham số filter hỗ trợ lọc theo các trường liên kết, ví dụ:
Các trường liên kết cũng có thể được lồng vào nhau.
Bạn có thể sắp xếp kết quả truy vấn bằng cách sử dụng tham số sort.
Bạn cũng có thể sắp xếp theo các trường của đối tượng liên kết.
Tạo các đối tượng dữ liệu mới thông qua Repository.
Khi tạo mới, bạn có thể đồng thời tạo các đối tượng liên kết. Tương tự như truy vấn, việc sử dụng lồng ghép các đối tượng liên kết cũng được hỗ trợ, ví dụ:
Nếu đối tượng liên kết đã tồn tại trong cơ sở dữ liệu, bạn có thể truyền ID của nó. Khi tạo mới, một mối quan hệ liên kết sẽ được thiết lập với đối tượng liên kết đó.
Sau khi lấy được đối tượng dữ liệu, bạn có thể trực tiếp sửa đổi các thuộc tính trên đối tượng dữ liệu (Model) và sau đó gọi phương thức save để lưu các thay đổi.
Đối tượng dữ liệu Model kế thừa từ Sequelize Model. Để biết các thao tác trên Model, vui lòng tham khảo Sequelize Model.
Bạn cũng có thể cập nhật dữ liệu thông qua Repository:
Khi cập nhật, bạn có thể kiểm soát các trường dữ liệu được cập nhật bằng cách sử dụng các tham số whitelist và blacklist, ví dụ:
Khi cập nhật, bạn có thể thiết lập các đối tượng liên kết, ví dụ:
Bạn có thể gọi phương thức destroy() trong Repository để thực hiện thao tác xóa. Khi xóa, bạn cần chỉ định điều kiện lọc:
Thông thường, hàm này không được gọi trực tiếp bởi nhà phát triển. Nó chủ yếu được khởi tạo sau khi đăng ký kiểu thông qua db.registerRepositories() và chỉ định kiểu repository đã đăng ký tương ứng trong các tham số của db.collection().
Chữ ký
constructor(collection: Collection)Ví dụ
databaseThể hiện quản lý cơ sở dữ liệu của ngữ cảnh hiện tại.
collectionThể hiện quản lý bộ sưu tập tương ứng.
modelLớp mô hình dữ liệu tương ứng.
find()Truy vấn một tập dữ liệu từ cơ sở dữ liệu, có thể chỉ định các điều kiện lọc, sắp xếp, v.v.
Chữ ký
async find(options?: FindOptions): Promise<Model[]>Kiểu
Chi tiết
filter: FilterĐiều kiện truy vấn, dùng để lọc kết quả dữ liệu. Trong các tham số truy vấn được truyền vào, key là tên trường cần truy vấn, và value có thể là giá trị cần truy vấn hoặc được sử dụng kết hợp với các toán tử để lọc dữ liệu theo các điều kiện khác.
Để biết thêm các toán tử, vui lòng tham khảo Toán tử truy vấn.
filterByTk: TargetKeyTruy vấn dữ liệu bằng TargetKey, đây là một phương thức tiện lợi cho tham số filter. Trường cụ thể mà TargetKey đại diện có thể được cấu hình trong bộ sưu tập, mặc định là primaryKey.
fields: string[]Các cột truy vấn, dùng để kiểm soát kết quả trường dữ liệu. Sau khi truyền tham số này, chỉ các trường được chỉ định sẽ được trả về.
except: string[]Các cột loại trừ, dùng để kiểm soát kết quả trường dữ liệu. Sau khi truyền tham số này, các trường được truyền vào sẽ không được xuất ra.
appends: string[]Các cột bổ sung, dùng để tải dữ liệu liên kết. Sau khi truyền tham số này, các trường liên kết được chỉ định cũng sẽ được xuất ra.
sort: string[] | stringChỉ định cách sắp xếp kết quả truy vấn. Tham số được truyền vào là tên trường, mặc định sắp xếp theo thứ tự tăng dần asc. Nếu cần sắp xếp theo thứ tự giảm dần desc, bạn có thể thêm ký hiệu - trước tên trường, ví dụ: ['-id', 'name'], có nghĩa là sắp xếp theo id giảm dần, name tăng dần.
limit: numberGiới hạn số lượng kết quả, tương tự như limit trong SQL.
offset: numberĐộ lệch truy vấn, tương tự như offset trong SQL.
Ví dụ
findOne()Truy vấn một bản ghi dữ liệu duy nhất từ cơ sở dữ liệu thỏa mãn các đ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ổng số dữ liệu thỏa mãn các điều kiện cụ thể từ cơ sở dữ liệu. Tương đương với Model.count() trong Sequelize.
Chữ ký
count(options?: CountOptions): Promise<number>Kiểu
Ví dụ
findAndCount()Truy vấn một tập dữ liệu và tổng số kết quả thỏa mãn các điều kiện cụ thể từ cơ sở dữ liệu. Tương đương với Model.findAndCountAll() trong Sequelize.
Chữ ký
async findAndCount(options?: FindAndCountOptions): Promise<[Model[], number]>Kiểu
Chi tiết
Các tham số truy vấn giống như 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()Chèn một bản ghi dữ liệu mới 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 thông tin về các trường quan hệ, các bản ghi dữ liệu quan hệ tương ứng cũng sẽ được tạo hoặc cập nhật đồng thời.
Chữ ký
async create<M extends Model>(options: CreateOptions): Promise<M>Ví dụ
createMany()Chèn nhiều bản ghi dữ liệu mới vào bảng dữ liệu. Tương đương với việc gọi phương thức create() nhiều lần.
Chữ ký
createMany(options: CreateManyOptions): Promise<Model[]>Kiểu
Chi tiết
records: Một mảng các đối tượng dữ liệu cho các bản ghi cần tạo.transaction: Đối tượng giao dịch. Nếu không truyền tham số giao dịch, phương thức này sẽ tự động tạo một giao dịch 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 thông tin về các trường quan hệ, các bản ghi dữ liệu quan hệ tương ứng cũng sẽ được tạo hoặc cập nhật đồng thời.
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 destroy(options?: TargetKey | TargetKey[] | DestroyOptions): Promise<number>Kiểu
Chi tiết
filter: Chỉ định các điều kiện lọc cho các bản ghi cần xóa. Để biết cách sử dụng chi tiết của Filter, vui lòng tham khảo phương thức find().filterByTk: Chỉ định các điều kiện lọc cho các bản ghi cần xóa theo TargetKey.truncate: Có xóa sạch dữ liệu bảng hay không, có hiệu lực khi không truyền tham số filter hoặc filterByTk.transaction: Đối tượng giao dịch. Nếu không truyền tham số giao dịch, phương thức này sẽ tự động tạo một giao dịch nội bộ.