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
Đây là lớp quản lý trường của bộ sưu tập (lớp trừu tượng). Đồng thời, nó là lớp cơ sở cho tất cả các loại trường. Bất kỳ loại trường nào khác đều được triển khai bằng cách kế thừa lớp này.
Để biết cách tùy chỉnh trường, bạn có thể tham khảo [Mở rộng loại trường]
Thông thường, hàm này không được các nhà phát triển gọi trực tiếp, mà chủ yếu được gọi thông qua phương thức db.collection({ fields: [] }) như một điểm truy cập ủy quyền.
Khi mở rộng một trường, bạn chủ yếu triển khai bằng cách kế thừa lớp trừu tượng Field, sau đó đăng ký nó vào thể hiện của Database.
Chữ ký
constructor(options: FieldOptions, context: FieldContext)Tham số
| Tham số | Kiểu | Mặc định | Mô tả |
|---|---|---|---|
options | FieldOptions | - | Đối tượng cấu hình trường |
options.name | string | - | Tên trường |
options.type | string | - | Loại trường, tương ứng với tên loại trường đã đăng ký trong db |
context | FieldContext | - | Đối tượng ngữ cảnh trường |
context.database | Database | - | Thể hiện của Database |
context.collection | Collection | - | Thể hiện của bộ sưu tập |
nameTên trường.
typeLoại trường.
dataTypeKiểu lưu trữ trường trong cơ sở dữ liệu.
optionsCác tham số cấu hình khởi tạo trường.
contextĐối tượng ngữ cảnh trường.
on()Đây là phương thức định nghĩa nhanh dựa trên các sự kiện của bộ sưu tập. Tương đương với db.on(this.collection.name + '.' + eventName, listener).
Khi kế thừa, bạn thường không cần ghi đè phương thức này.
Chữ ký
on(eventName: string, listener: (...args: any[]) => void)Tham số
| Tham số | Kiểu | Mặc định | Mô tả |
|---|---|---|---|
eventName | string | - | Tên sự kiện |
listener | (...args: any[]) => void | - | Trình lắng nghe sự kiện |
off()Đây là phương thức xóa nhanh dựa trên các sự kiện của bộ sưu tập. Tương đương với db.off(this.collection.name + '.' + eventName, listener).
Khi kế thừa, bạn thường không cần ghi đè phương thức này.
Chữ ký
off(eventName: string, listener: (...args: any[]) => void)Tham số
| Tham số | Kiểu | Mặc định | Mô tả |
|---|---|---|---|
eventName | string | - | Tên sự kiện |
listener | (...args: any[]) => void | - | Trình lắng nghe sự kiện |
bind()Nội dung được thực thi khi một trường được thêm vào bộ sưu tập. Thường được dùng để thêm trình lắng nghe sự kiện của bộ sưu tập và các xử lý khác.
Khi kế thừa, bạn cần gọi phương thức super.bind() tương ứng trước.
Chữ ký
bind()unbind()Nội dung được thực thi khi một trường bị xóa khỏi bộ sưu tập. Thường được dùng để xóa trình lắng nghe sự kiện của bộ sưu tập và các xử lý khác.
Khi kế thừa, bạn cần gọi phương thức super.unbind() tương ứng trước.
Chữ ký
unbind()get()Lấy giá trị của một mục cấu hình của trường.
Chữ ký
get(key: string): anyTham số
| Tham số | Kiểu | Mặc định | Mô tả |
|---|---|---|---|
key | string | - | Tên mục cấu hình |
Ví dụ
merge()Hợp nhất các giá trị của các mục cấu hình của trường.
Chữ ký
merge(options: { [key: string]: any }): voidTham số
| Tham số | Kiểu | Mặc định | Mô tả |
|---|---|---|---|
options | { [key: string]: any } | - | Đối tượng mục cấu hình cần hợp nhất |
Ví dụ
remove()Xóa trường khỏi bộ sưu tập (chỉ xóa khỏi bộ nhớ).
Ví dụ
removeFromDb()Xóa trường khỏi cơ sở dữ liệu.
Chữ ký
removeFromDb(options?: Transactionable): Promise<void>Tham số
| Tham số | Kiểu | Mặc định | Mô tả |
|---|---|---|---|
options.transaction? | Transaction | - | Thể hiện của giao dịch |
existsInDb()Kiểm tra xem trường có tồn tại trong cơ sở dữ liệu hay không.
Chữ ký
existsInDb(options?: Transactionable): Promise<boolean>Tham số
| Tham số | Kiểu | Mặc định | Mô tả |
|---|---|---|---|
options.transaction? | Transaction | - | Thể hiện của giao dịch |
NocoBase tích hợp sẵn một số loại trường phổ biến. Bạn có thể trực tiếp sử dụng tên type tương ứng để chỉ định loại trường khi định nghĩa các trường cho một bộ sưu tập. Các loại trường khác nhau có cấu hình tham số khác nhau; vui lòng tham khảo danh sách dưới đây để biết chi tiết.
Tất cả các mục cấu hình cho các loại trường, ngoại trừ những mục được giới thiệu thêm bên dưới, sẽ được truyền qua Sequelize. Do đó, tất cả các mục cấu hình trường được Sequelize hỗ trợ đều có thể được sử dụng ở đây (ví dụ: allowNull, defaultValue, v.v.).
Ngoài ra, các loại trường phía máy chủ chủ yếu giải quyết các vấn đề về lưu trữ cơ sở dữ liệu và một số thuật toán, và về cơ bản không liên quan đến các loại hiển thị trường và thành phần giao diện người dùng phía frontend. Đối với các loại trường frontend, vui lòng tham khảo hướng dẫn tương ứng.
'boolean'Kiểu logic (Boolean).
Ví dụ
'integer'Kiểu số nguyên (32-bit).
Ví dụ
'bigInt'Kiểu số nguyên lớn (64-bit).
Ví dụ
'double'Kiểu số thực dấu phẩy động độ chính xác kép (64-bit).
Ví dụ
'real'Kiểu số thực (chỉ áp dụng cho PG).
'decimal'Kiểu số thập phân.
'string'Kiểu chuỗi. Tương đương với kiểu VARCHAR trong hầu hết các cơ sở dữ liệu.
Ví dụ
'text'Kiểu văn bản. Tương đương với kiểu TEXT trong hầu hết các cơ sở dữ liệu.
Ví dụ
'password'Kiểu mật khẩu (mở rộng của NocoBase). Mã hóa mật khẩu dựa trên phương thức scrypt của gói crypto gốc của Node.js.
Ví dụ
Tham số
| Tham số | Kiểu | Mặc định | Mô tả |
|---|---|---|---|
length | number | 64 | Chiều dài ký tự |
randomBytesSize | number | 8 | Kích thước byte ngẫu nhiên |
'date'Kiểu ngày.
'time'Kiểu thời gian.
'array'Kiểu mảng (chỉ áp dụng cho PG).
'json'Kiểu JSON.
'jsonb'Kiểu JSONB (chỉ áp dụng cho PG, các loại khác sẽ được tương thích thành kiểu 'json').
'uuid'Kiểu UUID.
'uid'Kiểu UID (mở rộng của NocoBase). Kiểu định danh chuỗi ngẫu nhiên ngắn.
'formula'Kiểu công thức (mở rộng của NocoBase). Có thể cấu hình tính toán công thức toán học dựa trên mathjs. Công thức có thể tham chiếu các giá trị của các cột khác trong cùng một bản ghi để tính toán.
Ví dụ
'radio'Kiểu radio (mở rộng của NocoBase). Tối đa một hàng dữ liệu trong toàn bộ bộ sưu tập có thể có giá trị trường này là true, tất cả các hàng khác sẽ là false hoặc null.
Ví dụ
Toàn bộ hệ thống chỉ có một người dùng được đánh dấu là root. Sau khi giá trị root của bất kỳ người dùng nào khác được thay đổi thành true, tất cả các bản ghi khác có root là true sẽ được sửa đổi thành false:
'sort'Kiểu sắp xếp (mở rộng của NocoBase). Sắp xếp dựa trên các số nguyên, tự động tạo số thứ tự mới cho các bản ghi mới, và sắp xếp lại số thứ tự khi dữ liệu được di chuyển.
Nếu một bộ sưu tập định nghĩa tùy chọn sortable, một trường tương ứng cũng sẽ được tự động tạo.
Ví dụ
Bài viết có thể được sắp xếp dựa trên người dùng sở hữu:
'virtual'Kiểu ảo. Không thực sự lưu trữ dữ liệu, chỉ dùng để định nghĩa getter/setter đặc biệt.
'belongsTo'Kiểu liên kết nhiều-một. Khóa ngoại được lưu trữ trong bảng của chính nó, đối lập với hasOne/hasMany.
Ví dụ
Bất kỳ bài viết nào cũng thuộc về một tác giả:
'hasOne'Kiểu liên kết một-một. Khóa ngoại được lưu trữ trong bảng liên kết, đối lập với belongsTo.
Ví dụ
Mỗi người dùng đều có một hồ sơ cá nhân:
'hasMany'Kiểu liên kết một-nhiều. Khóa ngoại được lưu trữ trong bảng liên kết, đối lập với belongsTo.
Ví dụ
Bất kỳ người dùng nào cũng có thể có nhiều bài viết:
'belongsToMany'Kiểu liên kết nhiều-nhiều. Sử dụng bảng trung gian để lưu trữ khóa ngoại của cả hai bên. Nếu không chỉ định một bảng hiện có làm bảng trung gian, một bảng trung gian sẽ được tạo tự động.
Ví dụ
Bất kỳ bài viết nào cũng có thể có nhiều thẻ, và bất kỳ thẻ nào cũng có thể được thêm vào nhiều bài viết: