Supabase konnektor
Csatlakoztasd a Supabase projektedet, hogy szinkronizáld az adatbázis-rekordokat, felhasználói hitelesítési adatokat, fájltárolás eseményeket és valós idejű változásokat az ügyfél-elköteleződési automatizáláshoz.
Áttekintés
| Tulajdonság | Érték |
|---|---|
| Platform | Supabase |
| Kategória | Adatbázis és backend |
| Telepítés bonyolultsága | Könnyű |
| Hivatalos integráció | Igen |
| Szinkronizált adatok | Felhasználók, Táblák, Tárolás, Események |
| Elérhető Skillek | 11 |
| API típus | REST (PostgREST) + Valós idejű WebSocket |
| Hivatalos dokumentáció | supabase.com/docs |
Funkciók
- Automatikusan generált REST API, CRUD műveletek bármely Postgres táblán PostgREST-en keresztül, kód nélkül
- Auth felhasználó-szinkronizáció, Supabase Auth felhasználók szinkronizálása (e-mail, telefon, közösségi bejelentkezések) az elköteleződési platformra
- Valós idejű előfizetések, INSERT, UPDATE, DELETE események figyelése bármely táblán valós időben
- Sor szintű biztonság, Minden API-hozzáférés betartja a Postgres RLS szabályzatokat a biztonságos több-bérlős adatokhoz
- Tárolás integráció, Fájlfeltöltések követése és eszközök kezelése tárolóvödrök között
- Edge Functions, Kiszolgáló nélküli Deno funkciók meghívása egyéni logikához és webhookokhoz
- Teljes szöveges keresés, Postgres teljes szöveges keresési képességek kihasználása az API-n keresztül
Előfeltételek
Mielőtt elkezdenéd, győződj meg róla, hogy rendelkezel:
- Egy Supabase projekttel (app.supabase.com)
- A projekted API URL-jével és API kulcsaival (megtalálható a Beállítások → API alatt)
- Egy Tajo fiókkal API-hozzáféréssel
API kulcsok
A Supabase két kulcsot biztosít: anon (nyilvános, betartja az RLS-t) és service_role (megkerüli az RLS-t, adminisztrátori hozzáférés). A szerveroldali integrációkhoz a service_role kulcsot, kliens oldali esetekhez az anon kulcsot használd.
Hitelesítés
A Supabase API kulcs hitelesítést használ. Minden kérés megköveteli az apikey fejlécet, és opcionálisan egy Authorization bearer tokent felhasználói hatókörű hozzáféréshez.
# Using anon key (respects RLS)curl 'https://<project_ref>.supabase.co/rest/v1/customers' \ -H "apikey: <SUPABASE_ANON_KEY>" \ -H "Authorization: Bearer <SUPABASE_ANON_KEY>"
# Using service_role key (bypasses RLS)curl 'https://<project_ref>.supabase.co/rest/v1/customers' \ -H "apikey: <SUPABASE_SERVICE_ROLE_KEY>" \ -H "Authorization: Bearer <SUPABASE_SERVICE_ROLE_KEY>"Konfiguráció
Alapbeállítás
connectors: supabase: enabled: true project_url: "https://xyzcompany.supabase.co" api_key: "${SUPABASE_SERVICE_ROLE_KEY}"
# Data sync options sync: users: true tables: - customers - orders - products storage: true realtime: true
# Map Supabase Auth users to contacts user_mapping: email: email phone: SMS user_metadata.full_name: FIRSTNAME created_at: SIGNUP_DATEMezőleképezés
Képezd le a Supabase táblaoszlopokat az elköteleződési platform attribútumaihoz:
Default User Mappings
| Parameter | Type | Description |
|---|---|---|
email required | string | User email from Supabase Auth (unique identifier) |
phone optional | string | Phone number for SMS/WhatsApp engagement |
user_metadata.full_name optional | string | Display name from Auth user metadata |
user_metadata.avatar_url optional | string | Profile image URL |
created_at optional | timestamp | Account creation timestamp |
last_sign_in_at optional | timestamp | Most recent login for engagement scoring |
app_metadata.provider optional | string | Auth provider (email, google, github, etc.) |
confirmed_at optional | timestamp | Email confirmation timestamp |
Egyéni tábla leképezés
table_mapping: customers: # Column → Attribute mapping email: email full_name: FIRSTNAME company: COMPANY plan: SUBSCRIPTION_PLAN mrr: MONTHLY_REVENUE created_at: SIGNUP_DATE
orders: # Track as events sync_as: events event_name: "order_placed" properties: total: amount status: order_status items: line_itemsAPI végpontok
A Supabase REST API automatikusan generálódik az adatbázis-sémádból a https://<ref>.supabase.co/rest/v1/ címen.
| Végpont | Módszer | Leírás |
|---|---|---|
/rest/v1/{table} | GET | Sorok lekérdezése szűréssel, rendezéssel, oldalazással |
/rest/v1/{table} | POST | Sorok beszúrása (tömeges és upsert is támogatott) |
/rest/v1/{table} | PATCH | Szűrőknek megfelelő sorok frissítése |
/rest/v1/{table} | DELETE | Szűrőknek megfelelő sorok törlése |
/rest/v1/rpc/{function} | POST | Postgres funkció meghívása |
/auth/v1/signup | POST | Új felhasználó létrehozása |
/auth/v1/token?grant_type=password | POST | Bejelentkezés jelszóval |
/auth/v1/user | GET | Jelenlegi felhasználó lekérése |
/auth/v1/admin/users | GET | Összes felhasználó listázása (service_role) |
/storage/v1/object/{bucket}/{path} | POST | Fájl feltöltése |
/storage/v1/object/list/{bucket} | POST | Fájlok listázása vödörben |
/functions/v1/{function_name} | POST | Edge Function meghívása |
Szűrő operátorok
| Operátor | Leírás | Példa |
|---|---|---|
eq | Egyenlő | ?status=eq.active |
neq | Nem egyenlő | ?status=neq.deleted |
gt, gte | Nagyobb mint | ?amount=gt.100 |
lt, lte | Kisebb mint | ?created_at=lt.2024-01-01 |
like, ilike | Minta illeszkedés | ?name=ilike.%john% |
in | Tömbben van | ?status=in.(active,trial) |
is | Null ellenőrzés | ?deleted_at=is.null |
Események
Auth események
| Esemény | Kiváltó ok | Használati eset |
|---|---|---|
user.signed_up | Új felhasználó regisztrációja | Üdvözlő sorozat |
user.signed_in | Felhasználói bejelentkezés | Aktivitás követés |
user.updated | Profil módosítások | Adatszinkronizálás |
user.deleted | Fiók törlése | Tisztítási munkafolyamatok |
Adatbázis-események (Valós idejű)
| Esemény | Kiváltó ok | Használati eset |
|---|---|---|
INSERT | Új sor hozzáadva | Új rendelés/ügyfél értesítések |
UPDATE | Sor módosítva | Státuszváltozás munkafolyamatok |
DELETE | Sor eltávolítva | Lemorzsolódás-felderítés |
Webhook események
| Esemény | Kiváltó ok | Használati eset |
|---|---|---|
auth.user.created | Felhasználói regisztráció webhookon keresztül | Onboarding indítása |
storage.object.created | Fájl feltöltve | Eszközfeldolgozás |
Kódpéldák
A konnektor inicializálása
import { TajoClient } from '@tajo/sdk';import { createClient } from '@supabase/supabase-js';
const tajo = new TajoClient({ apiKey: process.env.TAJO_API_KEY,});
// Connect Supabase projectawait tajo.connectors.connect('supabase', { projectUrl: process.env.SUPABASE_URL, serviceRoleKey: process.env.SUPABASE_SERVICE_ROLE_KEY,});Felhasználók szinkronizálása kapcsolatokba
// Sync all Supabase Auth users as contactsawait tajo.connectors.sync('supabase', { type: 'full', resources: ['users'],});
// Incremental sync (new/changed users only)await tajo.connectors.sync('supabase', { type: 'incremental', resources: ['users'], since: '2024-01-01T00:00:00Z',});Figyelés valós idejű változásokra
// Subscribe to new orders for engagement triggersconst supabase = createClient( process.env.SUPABASE_URL, process.env.SUPABASE_SERVICE_ROLE_KEY);
supabase .channel('orders') .on('postgres_changes', { event: 'INSERT', schema: 'public', table: 'orders' }, async (payload) => { // Forward to Tajo as an event await tajo.events.track({ email: payload.new.customer_email, event: 'order_placed', properties: { order_id: payload.new.id, total: payload.new.total, items: payload.new.line_items, }, }); } ) .subscribe();Lekérdezés és szegmentálás
// Query customers by plan for targeted campaignsconst { data: proUsers } = await supabase .from('customers') .select('email, full_name, plan, mrr') .eq('plan', 'pro') .gt('mrr', 100) .order('mrr', { ascending: false });
// Sync to a Brevo list for campaign targetingawait tajo.lists.addContacts(PRO_LIST_ID, proUsers);Ráta-korlátok
API ráta-korlátok
A Supabase ráta-korlátjai a tervtől függnek. Ingyenes szint: 500 kérés/perc. Pro: 1 000 kérés/mp. Enterprise korlátokért vedd fel a kapcsolatot a Supabase-szal.
| Terv | Ráta-korlát | Valós idejű kapcsolatok |
|---|---|---|
| Ingyenes | 500 kérés/perc | 200 párhuzamos |
| Pro | 1 000 kérés/mp | 500 párhuzamos |
| Team | 2 000 kérés/mp | 1 000 párhuzamos |
| Enterprise | Egyéni | Egyéni |
Hibaelhárítás
Gyakori problémák
| Probléma | Ok | Megoldás |
|---|---|---|
| 401 Unauthorized | Érvénytelen vagy lejárt API kulcs | Ellenőrizd az API kulcsokat a Supabase Dashboard → Beállítások → API alatt |
| 403 Forbidden | RLS szabályzat blokkolja a hozzáférést | Használj service_role kulcsot adminisztrátori műveleteknél, vagy ellenőrizd az RLS szabályzatokat |
| Nincsenek valós idejű események | Valós idejű nincs engedélyezve a táblánál | Engedélyezd az Adatbázis → Replikáció menüben, add hozzá a táblát a publikációhoz |
| Üres lekérdezési eredmények | Az RLS az összes sort kiszűri | Ellenőrizd, hogy az RLS szabályzatok engedélyezik-e a hitelesített szerepkör olvasását |
| Tárolás feltöltés sikertelen | Vödör szabályzatok | Ellenőrizd, hogy a tároló vödör nyilvános-e vagy megfelelő RLS szabályzatokkal rendelkezik |
Hibakeresési mód
connectors: supabase: debug: true log_level: verbose log_queries: true log_realtime: trueKapcsolat tesztelése
tajo connectors test supabase# ✓ API connection successful# ✓ Auth endpoint accessible# ✓ Tables readable (12 tables found)# ✓ Storage accessible (3 buckets)# ✓ Realtime connection established# ✓ Edge Functions available (4 functions)Legjobb gyakorlatok
- A service_role kulcsot csak szerver oldalon használd, Soha ne tedd ki kliens kódban
- Engedélyezd az RLS-t minden táblán, Még service_role esetén is tervezz RLS-sel a mélységi védelmért
- Használj valós idejű szinkronizálást eseményvezérelt szinkronizáláshoz, Hatékonyabb, mint a változások lekérdezése
- Kötegelj műveleteket, Használj tömeges beszúrásokat és az
inszűrőt nagy volumenű műveleteknél - Képezd le a felhasználói metaadatokat, Tárold az elköteleződéshez releváns mezőket a
user_metadata-ban a regisztráció során - Használj Edge Functions-t webhookokhoz, Dolgozd fel a bejövő webhookokat Supabase Edge Functions-szel az alacsony késleltetésű kezelésért
Biztonság
- API kulcs hitelesítés, Minden kérés érvényes API kulcsokat igényel
- Sor szintű biztonság (RLS), Postgres natív hozzáférés-szabályozás soronként
- JWT ellenőrzés, Az Auth tokenek minden kérésnél ellenőrzött aláírt JWT-k
- SSL/TLS, Minden kapcsolat titkosítva van az átvitel során
- SOC 2 Type II, A Supabase SOC 2 megfelelőséggel rendelkezik
- Hálózati korlátozások, Opcionális IP engedélyezési lista fizetős terveken