Giao diện
Câu hỏi thường gặp — Credential
Sử dụng chung
Resource Type khác gì biến môi trường (Environment Variables)?
| Tiêu chí | Resource Type | Biến môi trường |
|---|---|---|
| Mục đích | Định nghĩa cấu trúc (schema) cho credential | Lưu giá trị cấu hình |
| Quản lý | Qua giao diện, lưu trong database | File .env hoặc hệ điều hành |
| Schema | Có JSON Schema để validate | Không có schema |
| Phân quyền | Qua ACL | Qua quyền truy cập file/server |
| Khi nào dùng | Credential có cấu trúc phức tạp, cần form tự động | Giá trị đơn giản, cố định |
Plugin khác truy cập resource type như thế nào?
Gọi API resource_type:list để lấy danh sách. API này được ACL allow cho mọi user đã đăng nhập (loggedIn), nên không cần quyền đặc biệt. Dữ liệu trả về bao gồm name, description, schemas — đủ để plugin tự sinh form cấu hình.
Trường schemas lưu gì?
Trường schemas chứa JSON Schema (dạng JSON object) mô tả cấu trúc dữ liệu cho loại credential. Ví dụ, resource type "SMTP" sẽ có schema với các property: host, port, username, password, encryption. Schema này được dùng để:
- Tự động sinh form nhập liệu
- Validate dữ liệu credential
- Hiển thị mô tả/gợi ý cho từng trường
Có thể tạo resource type từ code không?
Có. Trong server plugin, bạn có thể dùng Repository API:
typescript
const repo = app.db.getRepository('resource_type');
await repo.create({
values: {
name: 'Custom API',
description: 'Credential cho API tùy chỉnh',
schemas: {
type: 'object',
properties: {
endpoint: { type: 'string', title: 'Endpoint URL' },
token: { type: 'string', title: 'Bearer Token' },
},
required: ['endpoint', 'token'],
},
},
});Cấu hình
Resource type có hỗ trợ sắp xếp thứ tự không?
Có. Collection resource_type có sortable: true, cho phép sắp xếp thứ tự hiển thị bằng drag & drop trên giao diện hoặc qua API sort field.
Schema có hỗ trợ validation phức tạp không?
Trường schemas lưu JSON tùy ý — bạn có thể sử dụng JSON Schema đầy đủ bao gồm:
required: Các trường bắt buộcenum: Danh sách giá trị cho phépdefault: Giá trị mặc địnhminLength,maxLength: Giới hạn độ dàipattern: Regular expression
Tuy nhiên, việc validate phụ thuộc vào plugin tiêu thụ (consumer) — plugin credential chỉ lưu trữ schema.
Ai có quyền tạo và sửa resource type?
- Xem danh sách (
list): Mọi user đã đăng nhập - Tạo/sửa/xóa: Phụ thuộc vào cấu hình ACL. Mặc định, chỉ admin hoặc role có quyền tương ứng trên collection
resource_type
Lỗi thường gặp
Không tìm thấy resource type sau khi tạo
Nguyên nhân có thể:
- Plugin chưa được kích hoạt
- Bảng
resource_typechưa được sync
Cách xử lý:
- Kiểm tra Plugin Manager — đảm bảo
plugin-credentialđã bật - Khởi động lại ứng dụng để trigger
db.sync()
Schema không hiển thị form đúng
Nguyên nhân: JSON Schema không đúng cú pháp hoặc thiếu type cho property.
Cách xử lý:
- Kiểm tra JSON có hợp lệ (dùng JSON validator)
- Mỗi property phải có
type(string, number, boolean, object, array) - Sử dụng
titlecho tên hiển thị thân thiện
Lỗi khi lưu schema với ký tự đặc biệt
Nguyên nhân: Trường schemas sử dụng kiểu jsonb — một số ký tự đặc biệt có thể gây lỗi parse.
Cách xử lý: Đảm bảo JSON được escape đúng. Tránh dùng ký tự \ không đúng cách trong giá trị string.