Trình Kết Nối Supabase
Kết nối Supabase với Brevo qua Tajo để đồng bộ database records, auth users và realtime events, kích hoạt chiến dịch marketing tự động từ thay đổi dữ liệu ứng dụng.
Tổng Quan
| Thuộc Tính | Giá Trị |
|---|---|
| Nền Tảng | Supabase |
| Danh Mục | Tùy Chỉnh |
| Độ Phức Tạp Thiết Lập | Dễ |
| Tích Hợp Chính Thức | Không |
| Dữ Liệu Đồng Bộ | Database, Auth Users, Realtime |
| Loại API | PostgREST API + Auth API |
| URL API | https://[project-ref].supabase.co |
Tính Năng
- Đồng bộ database table - Truy vấn và đồng bộ bất kỳ Supabase table nào
- Auth users - Nhập Supabase auth users vào liên hệ Brevo
- Realtime subscriptions - Nhận cập nhật khi database rows thay đổi
- Row Level Security - Truy cập dữ liệu an toàn với Supabase service role
- Functions - Gọi Supabase Edge Functions để xử lý dữ liệu tùy chỉnh
Yêu Cầu
Trước khi bắt đầu, hãy đảm bảo bạn có:
- Tài khoản Supabase với project hoạt động
- Project URL và API keys
- Tài khoản Brevo với quyền truy cập API
- Tài khoản Tajo
Xác Thực
API Keys
Sử dụng service_role key cho server-side integrations vì nó bypass Row Level Security. Không bao giờ expose service_role key phía client — chỉ dùng anon key ở phía client.
# Sử dụng service role key cho tích hợp server-sidecurl "https://[ref].supabase.co/rest/v1/users" \ -H "apikey: YOUR_SERVICE_ROLE_KEY" \ -H "Authorization: Bearer YOUR_SERVICE_ROLE_KEY"Kết Nối với Tajo
tajo connectors install supabase \ --project-url $SUPABASE_URL \ --service-role-key $SUPABASE_SERVICE_ROLE_KEYCấu Hình
Thiết Lập Cơ Bản
connectors: supabase: enabled: true project_url: "${SUPABASE_URL}" service_role_key: "${SUPABASE_SERVICE_ROLE_KEY}"
sync: auth_users: true tables: - name: "profiles" primary_key: "user_id" sync_to: brevo_contacts - name: "subscriptions" sync_to: brevo_attributes
realtime: enabled: false # Bật nếu cần realtime updates tables: ["profiles", "subscriptions"]Ánh Xạ Trường
field_mapping: # Auth user fields email: email raw_user_meta_data->>'full_name': FULLNAME created_at: SIGNUP_DATE last_sign_in_at: LAST_LOGIN
# Profile table fields profiles.phone: SMS profiles.company: COMPANY_NAME profiles.plan: PLAN_TYPE
# Subscription fields subscriptions.status: SUBSCRIPTION_STATUS subscriptions.current_period_end: SUBSCRIPTION_RENEWALAPI Endpoints
| Phương Thức | Endpoint | Mô Tả |
|---|---|---|
GET | /rest/v1/{table} | Query table data |
POST | /rest/v1/{table} | Insert rows |
PATCH | /rest/v1/{table}?filter | Update rows |
DELETE | /rest/v1/{table}?filter | Delete rows |
GET | /auth/v1/admin/users | Liệt kê auth users |
GET | /auth/v1/admin/users/{id} | Lấy auth user theo ID |
Ví Dụ Code
Khởi Tạo Trình Kết Nối
import { TajoClient } from '@tajo/sdk';
const tajo = new TajoClient({ apiKey: process.env.TAJO_API_KEY, brevoApiKey: process.env.BREVO_API_KEY});
await tajo.connectors.connect('supabase', { projectUrl: process.env.SUPABASE_URL, serviceRoleKey: process.env.SUPABASE_SERVICE_ROLE_KEY});Đồng Bộ Users Sang Brevo
// Đồng bộ Supabase auth users sang liên hệ Brevoawait tajo.connectors.sync('supabase', { type: 'incremental', resources: ['auth_users', 'profiles'], since: '2024-01-01', joinTables: true});Giới Hạn Tốc Độ API
Supabase enforces rate limits dựa trên gói của bạn. Free plan giới hạn 500 yêu cầu/giây. Theo dõi header x-ratelimit-remaining để tránh lỗi 429.
Giới Hạn Tốc Độ
| Gói | Giới Hạn |
|---|---|
| Free | 500 yêu cầu/giây |
| Pro | 1.000 yêu cầu/giây |
| Team | 5.000 yêu cầu/giây |
| Enterprise | Tùy chỉnh |
Khắc Phục Sự Cố
| Sự Cố | Nguyên Nhân | Giải Pháp |
|---|---|---|
| 401 Unauthorized | API key không hợp lệ | Kiểm tra service role key trong Supabase dashboard |
| RLS blocking access | Row Level Security | Đảm bảo dùng service_role key, không phải anon key |
| Table không tìm thấy | Tên table sai | Kiểm tra schema và tên table chính xác |
| Auth users rỗng | Quyền admin thiếu | Service role key cần quyền admin để truy cập auth.users |