Conector Supabase

Conectați proiectul Supabase pentru a sincroniza înregistrările din baza de date, datele de autentificare a utilizatorilor, evenimentele de stocare a fișierelor și modificările în timp real pentru automatizarea implicării clienților.

Prezentare generală

ProprietateValoare
PlatformăSupabase
CategorieBază de date și Backend
Complexitate configurareUșoară
Integrare oficialăDa
Date sincronizateUtilizatori, Tabele, Stocare, Evenimente
Skilluri disponibile11
Tip APIREST (PostgREST) + WebSocket în timp real
Documentație oficialăsupabase.com/docs

Funcționalități

  • REST API auto-generat - Operații CRUD pe orice tabelă Postgres prin PostgREST, fără cod necesar
  • Sincronizare utilizatori Auth - Sincronizați utilizatorii Supabase Auth (email, telefon, conectări sociale) cu platforma de implicare
  • Abonamente în timp real - Ascultați evenimentele INSERT, UPDATE, DELETE pe orice tabelă în timp real
  • Securitate la nivel de rând - Toate accesele API respectă politicile RLS Postgres pentru date multi-tenant securizate
  • Integrare stocare - Urmăriți încărcările de fișiere și gestionați resursele în bucket-uri Storage
  • Funcții Edge - Invocați funcții Deno serverless pentru logică personalizată și webhook-uri
  • Căutare full-text - Valorificați capacitățile de căutare full-text Postgres prin API

Cerințe preliminare

Înainte de a începe, asigurați-vă că aveți:

  1. Un proiect Supabase (app.supabase.com)
  2. URL-ul API și cheile API ale proiectului (găsite în Settings → API)
  3. Un cont Tajo cu acces API

Chei API

Supabase oferă două chei: anon (publică, respectă RLS) și service_role (ocolește RLS, acces admin). Utilizați service_role pentru integrările server-side și anon pentru cele client-side.

Autentificare

Supabase utilizează autentificarea cu cheie API. Fiecare cerere necesită antetul apikey și opțional un token Bearer Authorization pentru acces cu scope de utilizator.

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>"

Configurare

Configurare de bază

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

Mapare câmpuri

Mapați coloanele tabelelor Supabase la atributele platformei de implicare:

Mapări implicite utilizatori

Parameter Type Description
email required
string

E-mailul utilizatorului din Supabase Auth (identificator unic)

phone optional
string

Numărul de telefon pentru implicare prin SMS/WhatsApp

user_metadata.full_name optional
string

Numele de afișare din metadatele utilizatorului Auth

user_metadata.avatar_url optional
string

URL-ul imaginii de profil

created_at optional
timestamp

Marca temporală a creării contului

last_sign_in_at optional
timestamp

Cea mai recentă autentificare pentru scorarea implicării

app_metadata.provider optional
string

Furnizorul de autentificare (email, google, github, etc.)

confirmed_at optional
timestamp

Marca temporală a confirmării e-mailului

Mapare tabelă personalizată

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

Puncte finale API

REST API Supabase este auto-generat din schema bazei de date la https://<ref>.supabase.co/rest/v1/.

Punct finalMetodăDescriere
/rest/v1/{table}GETInterogați rânduri cu filtrare, ordonare, paginare
/rest/v1/{table}POSTInserați rânduri (suportă bulk și upsert)
/rest/v1/{table}PATCHActualizați rânduri care corespund filtrelor
/rest/v1/{table}DELETEȘtergeți rânduri care corespund filtrelor
/rest/v1/rpc/{function}POSTApelați o funcție Postgres
/auth/v1/signupPOSTCreați un utilizator nou
/auth/v1/token?grant_type=passwordPOSTAutentificare cu parolă
/auth/v1/userGETObțineți utilizatorul curent
/auth/v1/admin/usersGETListați toți utilizatorii (service_role)
/storage/v1/object/{bucket}/{path}POSTÎncărcați fișier
/storage/v1/object/list/{bucket}POSTListați fișierele din bucket
/functions/v1/{function_name}POSTInvocați o funcție Edge

Operatori de filtrare

OperatorDescriereExemplu
eqEgal?status=eq.active
neqDiferit?status=neq.deleted
gt, gteMai mare decât?amount=gt.100
lt, lteMai mic decât?created_at=lt.2024-01-01
like, ilikePotrivire șablon?name=ilike.%john%
inÎn tablou?status=in.(active,trial)
isVerificare null?deleted_at=is.null

Evenimente

Evenimente Auth

EvenimentDeclanșatorCaz de utilizare
user.signed_upÎnregistrare utilizator nouSerie de bun venit
user.signed_inAutentificare utilizatorUrmărire activitate
user.updatedModificări profilSincronizare date
user.deletedȘtergere contFluxuri de lucru de curățare

Evenimente bază de date (Timp real)

EvenimentDeclanșatorCaz de utilizare
INSERTRând nou adăugatNotificări comandă/client nou
UPDATERând modificatFluxuri de lucru de modificare status
DELETERând eliminatDetectare churn

Evenimente Webhook

EvenimentDeclanșatorCaz de utilizare
auth.user.createdÎnregistrare utilizator prin webhookDeclanșare onboarding
storage.object.createdFișier încărcatProcesare resurse

Exemple de cod

Inițializare conector

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,
});

Sincronizare utilizatori ca contacte

// 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',
});

Ascultare modificări în timp real

// 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();

Interogare și segmentare

// 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);

Limite de rată

Limite de rată API

Limitele de rată Supabase depind de planul dvs. Nivel gratuit: 500 cereri/minut. Pro: 1.000 cereri/secundă. Contactați Supabase pentru limitele Enterprise.

PlanLimită de ratăConexiuni în timp real
Gratuit500 cereri/min200 concurente
Pro1.000 cereri/sec500 concurente
Team2.000 cereri/sec1.000 concurente
EnterprisePersonalizatPersonalizat

Depanare

Probleme frecvente

ProblemăCauzăSoluție
401 NeautorizatCheie API invalidă sau expiratăVerificați cheile API în Supabase Dashboard → Settings → API
403 InterzisPolitică RLS blochează accesulUtilizați cheia service_role pentru operații admin sau verificați politicile RLS
Niciun eveniment în timp realRealtime neactivat pentru tabelăActivați în Database → Replication → adăugați tabela la publicație
Rezultate interogare goaleRLS filtrează toate rândurileVerificați că politicile RLS permit rolului autentificat să citească
Încărcare stocare eșuatăPolitici bucketVerificați că bucket-ul Storage este public sau are politici RLS corecte

Modul de depanare

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

Testare conexiune

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)

Bune practici

  1. Utilizați cheia service_role doar server-side - Nu o expuneți niciodată în codul client
  2. Activați RLS pe toate tabelele - Chiar și cu service_role, proiectați cu RLS pentru apărare în profunzime
  3. Utilizați Realtime pentru sincronizare bazată pe evenimente - Mai eficient decât polling-ul pentru modificări
  4. Grupați operațiile - Utilizați inserții bulk și filtrul in pentru operații cu volum mare
  5. Mapați metadatele utilizatorului - Stocați câmpurile relevante pentru implicare în user_metadata la înregistrare
  6. Utilizați Funcții Edge pentru webhook-uri - Procesați webhook-urile primite cu Supabase Edge Functions pentru gestionare cu latență redusă

Securitate

  • Autentificare cu cheie API - Toate cererile necesită chei API valide
  • Securitate la nivel de rând (RLS) - Control acces nativ Postgres per rând
  • Verificare JWT - Token-urile de autentificare sunt JWT-uri semnate verificate la fiecare cerere
  • SSL/TLS - Toate conexiunile criptate în tranzit
  • SOC 2 Tip II - Supabase este conform SOC 2
  • Restricții de rețea - Allowlisting IP opțional pe planurile plătite

Resurse conexe

Subscribe to updates

developer-docs

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

auto-detect
Asistent AI

Bună! Întreabă-mă orice despre documentație.