Supabase Connector
Stanje konektorja: Načrtovano Še ni izdelano. Tajo danes ne poganja tega konektorja.
Ponazoritev · vzorčni podatki
Primer sinhronizacije
Vir
Supabase
Stanje konektorja: Načrtovano
Cilj
Vaše drugo orodje
Stanje konektorja: Orodje po meri
Preslikava polj
| Izvorno polje | Ciljno polje | Vzorčna vrednost |
|---|---|---|
record.id | source_id | record_1042 |
record.updated_at | updated_at | 2026-10-18T08:00:00Z |
record.value | value | sample_value |
- Osnutek
- Preglejte en zapis
- Odobrite to različico
Stanja veljajo za posamezne konektorje in ne zagotavljajo, da je ta sinhronizacija pripravljena. Polja so ponazoritvena. Pred zagonom sinhronizacije preverite dejansko shemo in dovoljenja.
Poveži svoj projekt Supabase za sinhronizacijo zapisov baze podatkov, podatkov avtentikacije uporabnikov, dogodkov shranjevanja datotek in sprememb v realnem času za avtomatizacijo angažiranja strank.
Pregled
| Lastnost | Vrednost |
|---|---|
| Platforma | Supabase |
| Kategorija | Podatkovna baza in ozadje |
| Zahtevnost nastavitve | Enostavna |
| Uradna integracija | Ne |
| Sinhronizirani podatki | Uporabniki, tabele, shranjevanje, dogodki |
| Razpoložljivi Skills | 11 |
| Vrsta API | REST (PostgREST) + Realtime WebSocket |
| Uradna dokumentacija | supabase.com/docs |
Funkcionalnosti
- Samodejno ustvarjen REST API, CRUD operacije na kateri koli tabeli Postgres prek PostgREST, brez kode
- Sinhronizacija uporabnikov Auth, sinhroniziraj uporabnike Supabase Auth (e-mail, telefon, socialne prijave) s platformo za angažiranje
- Naročnine v realnem času, poslušaj dogodke INSERT, UPDATE, DELETE na kateri koli tabeli v realnem času
- Varnost na ravni vrstice, ves dostop API spoštuje politike RLS Postgres za varno večnajemniško upravljanje podatkov
- Integracija shranjevanja, sledi nalaganju datotek in upravljaj sredstva po skupinah Storage
- Edge Functions, pokliči brezstrežniške funkcije Deno za logiko po meri in webhooks
- Iskanje po celotnem besedilu, izkoristi zmogljivosti iskanja po celotnem besedilu Postgres prek API
Predpogoji
Preden začneš, se prepričaj, da imaš:
- Projekt Supabase (app.supabase.com)
- API URL in API ključe projekta (najdeš jih v Settings → API)
- Tajo račun z dostopom do API
API ključi
Supabase ponuja dva ključa: anon (javen, spoštuje RLS) in service_role (zaobide RLS, administratorski dostop). Uporabi service_role za integracije na strani strežnika in anon za odjemalčevo stran.
Avtentikacija
Supabase uporablja avtentikacijo z API ključem. Vsak zahtevek zahteva glavo apikey in po izbiri žeton prinosnika Authorization za dostop z obsegom uporabnika.
# 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>"Konfiguracija
Osnovna nastavitev
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_DATEPreslikava polj
Preslikaj stolpce tabel Supabase v atribute platforme za angažiranje:
Privzete preslikave uporabnikov
| Parameter | Type | Description |
|---|---|---|
email required | string | E-mail uporabnika iz Supabase Auth (enolični identifikator) |
phone optional | string | Telefonska številka za SMS/WhatsApp angažiranje |
user_metadata.full_name optional | string | Prikazno ime iz metapodatkov uporabnika Auth |
user_metadata.avatar_url optional | string | URL profilne slike |
created_at optional | timestamp | Časovni žig ustvaritve računa |
last_sign_in_at optional | timestamp | Zadnja prijava za ocenjevanje angažiranosti |
app_metadata.provider optional | string | Ponudnik avtentikacije (email, google, github itd.) |
confirmed_at optional | timestamp | Časovni žig potrditve e-maila |
Preslikava tabel po meri
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_itemsKončne točke API
REST API Supabase se samodejno ustvari iz sheme baze podatkov na https://<ref>.supabase.co/rest/v1/.
| Končna točka | Metoda | Opis |
|---|---|---|
/rest/v1/{table} | GET | Poizvedba po vrsticah s filtriranjem, urejanjem, paginacijo |
/rest/v1/{table} | POST | Vstavljanje vrstic (podpira množično in upsert) |
/rest/v1/{table} | PATCH | Posodabljanje vrstic, ki ustrezajo filtrom |
/rest/v1/{table} | DELETE | Brisanje vrstic, ki ustrezajo filtrom |
/rest/v1/rpc/{function} | POST | Klic funkcije Postgres |
/auth/v1/signup | POST | Ustvarjanje novega uporabnika |
/auth/v1/token?grant_type=password | POST | Prijava z geslom |
/auth/v1/user | GET | Pridobi trenutnega uporabnika |
/auth/v1/admin/users | GET | Seznam vseh uporabnikov (service_role) |
/storage/v1/object/{bucket}/{path} | POST | Nalaganje datoteke |
/storage/v1/object/list/{bucket} | POST | Seznam datotek v skupini |
/functions/v1/{function_name} | POST | Klic Edge Function |
Operatorji filtriranja
| Operator | Opis | Primer |
|---|---|---|
eq | Enako | ?status=eq.active |
neq | Ni enako | ?status=neq.deleted |
gt, gte | Večje kot | ?amount=gt.100 |
lt, lte | Manjše kot | ?created_at=lt.2024-01-01 |
like, ilike | Vzorčno ujemanje | ?name=ilike.%john% |
in | V polju | ?status=in.(active,trial) |
is | Preverjanje null | ?deleted_at=is.null |
Dogodki
Dogodki Auth
| Dogodek | Sprožilec | Primer uporabe |
|---|---|---|
user.signed_up | Registracija novega uporabnika | Pozdravna serija |
user.signed_in | Prijava uporabnika | Sledenje dejavnosti |
user.updated | Spremembe profila | Sinhronizacija podatkov |
user.deleted | Brisanje računa | Čiščenje delovnih tokov |
Dogodki baze podatkov (Realtime)
| Dogodek | Sprožilec | Primer uporabe |
|---|---|---|
INSERT | Dodana nova vrstica | Obvestila o novih naročilih/strankah |
UPDATE | Spremenjena vrstica | Delovni tokovi spremembe statusa |
DELETE | Odstranjena vrstica | Zaznavanje odliva |
Dogodki webhooks
| Dogodek | Sprožilec | Primer uporabe |
|---|---|---|
auth.user.created | Registracija prek webhookov | Sprožitev uvajanja |
storage.object.created | Naložena datoteka | Obdelava sredstev |
Primeri kode
Inicializacija konektorja
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,});Sinhronizacija uporabnikov v stike
// 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',});Poslušanje sprememb v realnem času
// 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();Poizvedba in segmentacija
// 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);Omejitve hitrosti
Omejitve hitrosti API
Omejitve hitrosti Supabase so odvisne od plana. Brezplačni plan: 500 zahtevkov/minuto. Pro: 1.000 zahtevkov/sekundo. Za Enterprise omejitve kontaktiraj Supabase.
| Plan | Omejitev hitrosti | Vzporedne povezave Realtime |
|---|---|---|
| Free | 500 zahtevkov/min | 200 vzporedno |
| Pro | 1.000 zahtevkov/s | 500 vzporedno |
| Team | 2.000 zahtevkov/s | 1.000 vzporedno |
| Enterprise | Po meri | Po meri |
Odpravljanje težav
Pogoste težave
| Težava | Vzrok | Rešitev |
|---|---|---|
| 401 Unauthorized | Neveljaven ali potekel API ključ | Preveri API ključe v nadzorni plošči Supabase → Settings → API |
| 403 Forbidden | Politika RLS blokira dostop | Uporabi ključ service_role za administratorske operacije ali preveri politike RLS |
| Brez dogodkov Realtime | Realtime ni omogočen za tabelo | Omogoči v Database → Replication → dodaj tabelo v publikacijo |
| Prazni rezultati poizvedbe | RLS filtrira vse vrstice | Preveri, ali politike RLS dovoljujejo branje avtenticirani vlogi |
| Nalaganje v Storage neuspešno | Politike skupin | Preveri, ali je skupino Storage nastavljeno na javno ali ima pravilne politike RLS |
Način odpravljanja napak
connectors: supabase: debug: true log_level: verbose log_queries: true log_realtime: truePreizkus povezave
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)Najboljše prakse
- Ključ service_role uporablaj samo na strani strežnika, nikoli ga ne izpostavljaj v kodi odjemalca
- Omogoči RLS na vseh tabelah, tudi s service_role oblikuj z mislijo na RLS za globinsko obrambo
- Za sinhronizacijo na osnovi dogodkov uporabi Realtime, učinkovitejše od anketiranja za spremembe
- Paketne operacije, za operacije z velikim obsegom uporabi množična vstavljanja in filter
in - Preslikaj metapodatke uporabnika, med registracijo shrani polja, relevantna za angažiranje, v
user_metadata - Webhooks obdeluj z Edge Functions, za obdelavo dohodnih webhooks z nizko zakasnitvijo uporabi Supabase Edge Functions
Varnost
- Avtentikacija z API ključem, vsi zahtevki zahtevajo veljavne API ključe
- Varnost na ravni vrstice (RLS), nadzor dostopa izvoren za Postgres po vrstici
- Preverjanje JWT, žetoni Auth so podpisani JWT-ji, preverjeni pri vsakem zahtevku
- SSL/TLS, vse povezave šifrirane med prenosom
- SOC 2 Type II, Supabase je certificiran po SOC 2
- Omejitve omrežja, neobvezno dodajanje IP na seznam dovoljenih na plačljivih planih