Supabase Connector

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

LastnostVrednost
PlatformaSupabase
KategorijaPodatkovna baza in ozadje
Zahtevnost nastavitveEnostavna
Uradna integracijaDa
Sinhronizirani podatkiUporabniki, tabele, shranjevanje, dogodki
Razpoložljivi Skills11
Vrsta APIREST (PostgREST) + Realtime WebSocket
Uradna dokumentacijasupabase.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š:

  1. Projekt Supabase (app.supabase.com)
  2. API URL in API ključe projekta (najdeš jih v Settings → API)
  3. 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.

Terminal window
# 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_DATE

Preslikava 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_items

Končne točke API

REST API Supabase se samodejno ustvari iz sheme baze podatkov na https://<ref>.supabase.co/rest/v1/.

Končna točkaMetodaOpis
/rest/v1/{table}GETPoizvedba po vrsticah s filtriranjem, urejanjem, paginacijo
/rest/v1/{table}POSTVstavljanje vrstic (podpira množično in upsert)
/rest/v1/{table}PATCHPosodabljanje vrstic, ki ustrezajo filtrom
/rest/v1/{table}DELETEBrisanje vrstic, ki ustrezajo filtrom
/rest/v1/rpc/{function}POSTKlic funkcije Postgres
/auth/v1/signupPOSTUstvarjanje novega uporabnika
/auth/v1/token?grant_type=passwordPOSTPrijava z geslom
/auth/v1/userGETPridobi trenutnega uporabnika
/auth/v1/admin/usersGETSeznam vseh uporabnikov (service_role)
/storage/v1/object/{bucket}/{path}POSTNalaganje datoteke
/storage/v1/object/list/{bucket}POSTSeznam datotek v skupini
/functions/v1/{function_name}POSTKlic Edge Function

Operatorji filtriranja

OperatorOpisPrimer
eqEnako?status=eq.active
neqNi enako?status=neq.deleted
gt, gteVečje kot?amount=gt.100
lt, lteManjše kot?created_at=lt.2024-01-01
like, ilikeVzorčno ujemanje?name=ilike.%john%
inV polju?status=in.(active,trial)
isPreverjanje null?deleted_at=is.null

Dogodki

Dogodki Auth

DogodekSprožilecPrimer uporabe
user.signed_upRegistracija novega uporabnikaPozdravna serija
user.signed_inPrijava uporabnikaSledenje dejavnosti
user.updatedSpremembe profilaSinhronizacija podatkov
user.deletedBrisanje računaČiščenje delovnih tokov

Dogodki baze podatkov (Realtime)

DogodekSprožilecPrimer uporabe
INSERTDodana nova vrsticaObvestila o novih naročilih/strankah
UPDATESpremenjena vrsticaDelovni tokovi spremembe statusa
DELETEOdstranjena vrsticaZaznavanje odliva

Dogodki webhooks

DogodekSprožilecPrimer uporabe
auth.user.createdRegistracija prek webhookovSprožitev uvajanja
storage.object.createdNaložena datotekaObdelava 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 project
await 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 contacts
await 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 triggers
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) => {
// 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 campaigns
const { 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 targeting
await 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.

PlanOmejitev hitrostiVzporedne povezave Realtime
Free500 zahtevkov/min200 vzporedno
Pro1.000 zahtevkov/s500 vzporedno
Team2.000 zahtevkov/s1.000 vzporedno
EnterprisePo meriPo meri

Odpravljanje težav

Pogoste težave

TežavaVzrokRešitev
401 UnauthorizedNeveljaven ali potekel API ključPreveri API ključe v nadzorni plošči Supabase → Settings → API
403 ForbiddenPolitika RLS blokira dostopUporabi ključ service_role za administratorske operacije ali preveri politike RLS
Brez dogodkov RealtimeRealtime ni omogočen za tabeloOmogoči v Database → Replication → dodaj tabelo v publikacijo
Prazni rezultati poizvedbeRLS filtrira vse vrsticePreveri, ali politike RLS dovoljujejo branje avtenticirani vlogi
Nalaganje v Storage neuspešnoPolitike skupinPreveri, 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: true

Preizkus povezave

Terminal window
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

  1. Ključ service_role uporablaj samo na strani strežnika, nikoli ga ne izpostavljaj v kodi odjemalca
  2. Omogoči RLS na vseh tabelah, tudi s service_role oblikuj z mislijo na RLS za globinsko obrambo
  3. Za sinhronizacijo na osnovi dogodkov uporabi Realtime, učinkovitejše od anketiranja za spremembe
  4. Paketne operacije, za operacije z velikim obsegom uporabi množična vstavljanja in filter in
  5. Preslikaj metapodatke uporabnika, med registracijo shrani polja, relevantna za angažiranje, v user_metadata
  6. 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

Povezani viri

Subscribe to updates

developer-docs

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

auto-detect
AI pomočnik

Živjo! Vprašajte me o dokumentaciji.