Supabase Konektor

Povežite svoj Supabase projekt za sinkronizaciju zapisa baze podataka, korisničkih podataka autentifikacije, događaja pohrane datoteka i promjena u stvarnom vremenu za automatizaciju angažmana s klijentima.

Pregled

SvojstvoVrijednost
PlatformaSupabase
KategorijaBaza podataka i Backend
Složenost postavljanjaJednostavno
Službena integracijaDa
Sinkronizirani podaciKorisnici, Tablice, Pohrana, Događaji
Dostupne vještine11
Vrsta API-jaREST (PostgREST) + Realtime WebSocket
Službena dokumentacijasupabase.com/docs

Značajke

  • Automatski generirani REST API, CRUD operacije na bilo kojoj Postgres tablici putem PostgREST, bez koda
  • Sinkronizacija Auth korisnika, Sinkronizacija Supabase Auth korisnika (e-mail, telefon, socijalne prijave) na vašu platformu za angažman
  • Pretplate u stvarnom vremenu, Slušajte INSERT, UPDATE, DELETE događaje na bilo kojoj tablici u stvarnom vremenu
  • Sigurnost na razini reda, Sav API pristup poštuje Postgres RLS politike za sigurne višestanarne podatke
  • Integracija pohrane, Pratite učitavanja datoteka i upravljajte resursima kroz Storage buckete
  • Edge funkcije, Pozivajte serverless Deno funkcije za prilagođenu logiku i webhookove
  • Pretraživanje cijelog teksta, Iskoristite Postgres mogućnosti pretraživanja cijelog teksta putem API-ja

Preduvjeti

Prije nego što počnete, osigurajte da imate:

  1. Supabase projekt (app.supabase.com)
  2. Vaš projektni API URL i API ključevi (pronađeni u Postavke → API)
  3. Tajo račun s API pristupom

API ključevi

Supabase pruža dva ključa: anon (javni, poštuje RLS) i service_role (zaobilazi RLS, administratorski pristup). Koristite service_role za integracije na strani servera i anon za integracije na strani klijenta.

Autentifikacija

Supabase koristi autentifikaciju API ključem. Svaki zahtjev zahtijeva zaglavlje apikey i opcionalno Authorization bearer token za pristup ograničen na korisnika.

Terminal window
# Korištenje anon ključa (poštuje RLS)
curl 'https://<project_ref>.supabase.co/rest/v1/customers' \
-H "apikey: <SUPABASE_ANON_KEY>" \
-H "Authorization: Bearer <SUPABASE_ANON_KEY>"
# Korištenje service_role ključa (zaobilazi 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 konfiguracija

connectors:
supabase:
enabled: true
project_url: "https://xyzcompany.supabase.co"
api_key: "${SUPABASE_SERVICE_ROLE_KEY}"
# Opcije sinkronizacije podataka
sync:
users: true
tables:
- customers
- orders
- products
storage: true
realtime: true
# Mapiranje Supabase Auth korisnika na kontakte
user_mapping:
email: email
phone: SMS
user_metadata.full_name: FIRSTNAME
created_at: SIGNUP_DATE

Mapiranje polja

Mapirajte stupce Supabase tablice na atribute platforme za angažman:

Zadana mapiranja korisnika

Parameter Type Description
email required
string

Korisnikov e-mail iz Supabase Auth (jedinstveni identifikator)

phone optional
string

Broj telefona za SMS/WhatsApp angažman

user_metadata.full_name optional
string

Prikazno ime iz Auth korisničkih metapodataka

user_metadata.avatar_url optional
string

URL profilne slike

created_at optional
timestamp

Vremenska oznaka kreiranja računa

last_sign_in_at optional
timestamp

Najnovija prijava za ocjenjivanje angažmana

app_metadata.provider optional
string

Davatelj autentifikacije (email, google, github, itd.)

confirmed_at optional
timestamp

Vremenska oznaka potvrde e-maila

Mapiranje prilagođenih tablica

table_mapping:
customers:
# Mapiranje Stupac → Atribut
email: email
full_name: FIRSTNAME
company: COMPANY
plan: SUBSCRIPTION_PLAN
mrr: MONTHLY_REVENUE
created_at: SIGNUP_DATE
orders:
# Pratite kao događaje
sync_as: events
event_name: "order_placed"
properties:
total: amount
status: order_status
items: line_items

API krajnje točke

Supabase REST API automatski se generira iz vaše sheme baze podataka na https://<ref>.supabase.co/rest/v1/.

Krajnja točkaMetodaOpis
/rest/v1/{table}GETUpitajte redove s filtriranjem, sortiranjem, paginacijom
/rest/v1/{table}POSTUmetnite redove (podržava skupno i upsert)
/rest/v1/{table}PATCHAžurirajte redove koji odgovaraju filterima
/rest/v1/{table}DELETEIzbrišite redove koji odgovaraju filterima
/rest/v1/rpc/{function}POSTPozovite Postgres funkciju
/auth/v1/signupPOSTKreirajte novog korisnika
/auth/v1/token?grant_type=passwordPOSTPrijavite se s lozinkom
/auth/v1/userGETDohvatite trenutnog korisnika
/auth/v1/admin/usersGETPopis svih korisnika (service_role)
/storage/v1/object/{bucket}/{path}POSTUčitajte datoteku
/storage/v1/object/list/{bucket}POSTPopis datoteka u bucketu
/functions/v1/{function_name}POSTPozovite Edge funkciju

Operatori filtriranja

OperatorOpisPrimjer
eqJednako?status=eq.active
neqNije jednako?status=neq.deleted
gt, gteVeće od?amount=gt.100
lt, lteManje od?created_at=lt.2024-01-01
like, ilikePodudaranje uzorka?name=ilike.%john%
inU nizu?status=in.(active,trial)
isProvjera null?deleted_at=is.null

Događaji

Auth događaji

DogađajOkidačSlučaj upotrebe
user.signed_upNova registracija korisnikaSerija dobrodošlice
user.signed_inPrijava korisnikaPraćenje aktivnosti
user.updatedPromjena profilaSinkronizacija podataka
user.deletedBrisanje računaTijekovi rada čišćenja

Događaji baze podataka (Realtime)

DogađajOkidačSlučaj upotrebe
INSERTDodan novi redObavijesti o novoj narudžbi/korisniku
UPDATEIzmijenjen redTijekovi rada promjene statusa
DELETEUklonjen redOtkrivanje odljeva

Webhook događaji

DogađajOkidačSlučaj upotrebe
auth.user.createdRegistracija korisnika putem webhookovaPokretanje onboardinga
storage.object.createdUčitana datotekaObrada resursa

Primjeri koda

Inicijalizacija konektora

import { TajoClient } from '@tajo/sdk';
import { createClient } from '@supabase/supabase-js';
const tajo = new TajoClient({
apiKey: process.env.TAJO_API_KEY,
});
// Povežite Supabase projekt
await tajo.connectors.connect('supabase', {
projectUrl: process.env.SUPABASE_URL,
serviceRoleKey: process.env.SUPABASE_SERVICE_ROLE_KEY,
});

Sinkronizacija korisnika s kontaktima

// Sinkronizacija svih Supabase Auth korisnika kao kontakata
await tajo.connectors.sync('supabase', {
type: 'full',
resources: ['users'],
});
// Inkrementalna sinkronizacija (samo novi/promijenjeni korisnici)
await tajo.connectors.sync('supabase', {
type: 'incremental',
resources: ['users'],
since: '2024-01-01T00:00:00Z',
});

Slušanje promjena u stvarnom vremenu

// Pretplatite se na nove narudžbe za okidače angažmana
const 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) => {
// Proslijedite Taju kao događaj
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();

Upit i segmentacija

// Upitajte korisnike prema planu za ciljane kampanje
const { data: proUsers } = await supabase
.from('customers')
.select('email, full_name, plan, mrr')
.eq('plan', 'pro')
.gt('mrr', 100)
.order('mrr', { ascending: false });
// Sinkronizacija na Brevo popis za ciljanje kampanje
await tajo.lists.addContacts(PRO_LIST_ID, proUsers);

Ograničenja brzine

Ograničenja brzine API-ja

Supabase ograničenja brzine ovise o vašem planu. Besplatni plan: 500 zahtjeva/minuta. Pro: 1.000 zahtjeva/sekundi. Kontaktirajte Supabase za Enterprise ograničenja.

PlanOgraničenje brzineRealtime veze
Besplatno500 zah./min200 istovremeno
Pro1.000 zah./s500 istovremeno
Tim2.000 zah./s1.000 istovremeno
EnterprisePrilagođenoPrilagođeno

Rješavanje problema

Uobičajeni problemi

ProblemUzrokRješenje
401 UnauthorizedNevažeći ili istekli API ključProvjerite API ključeve u Supabase Dashboard → Postavke → API
403 ForbiddenRLS politika blokira pristupKoristite service_role ključ za administratorske operacije ili provjerite RLS politike
Nema realtime događajaRealtime nije omogućen za tablicuOmogućite u Database → Replication → dodajte tablicu u publikaciju
Prazni rezultati upitaRLS filtrira sve redoveVerificirajte da RLS politike dopuštaju autenticiranoj ulozi čitanje
Učitavanje pohrane neuspješnoPolitike bucketaProvjerite je li Storage bucket javni ili ima ispravne RLS politike

Način otklanjanja grešaka

connectors:
supabase:
debug: true
log_level: verbose
log_queries: true
log_realtime: true

Testiranje veze

Terminal window
tajo connectors test supabase
# ✓ API veza uspješna
# ✓ Auth krajnja točka dostupna
# ✓ Tablice čitljive (pronađeno 12 tablica)
# ✓ Pohrana dostupna (3 bucketa)
# ✓ Realtime veza uspostavljena
# ✓ Edge funkcije dostupne (4 funkcije)

Preporučene prakse

  1. Koristite service_role ključ samo na strani servera - Nikada ga ne izlažite u klijentskom kodu
  2. Omogućite RLS na svim tablicama - Čak i uz service_role, dizajnirajte s RLS-om za obranu u dubini
  3. Koristite Realtime za sinkronizaciju vođenu događajima - Učinkovitije od anketiranja za promjene
  4. Skupne operacije - Koristite skupno umetanje i in filtar za viskovoluenske operacije
  5. Mapirajte korisničke metapodatke - Pohranite relevantna polja za angažman u user_metadata tijekom registracije
  6. Koristite Edge funkcije za webhookove - Obradite dolazne webhookove s Supabase Edge funkcijama za rukovanje s niskom latencijom

Sigurnost

  • Autentifikacija API ključem - Svi zahtjevi zahtijevaju valjane API ključeve
  • Sigurnost na razini reda (RLS) - Postgres-nativna kontrola pristupa po redu
  • JWT verifikacija - Auth tokeni su potpisani JWT-ovi verificirani na svakom zahtjevu
  • SSL/TLS - Sve veze šifrirane u prijenosu
  • SOC 2 Type II - Supabase je SOC 2 usklađen
  • Mrežna ograničenja - Opcionalno IP dodavanje na popis dopuštenih na plaćenim planovima

Povezani resursi

Subscribe to updates

developer-docs

Drop your email or phone number — we'll send you what matters next.

auto-detect
AI asistent

Bok! Pitajte me o dokumentaciji.