Σύνδεσμος Supabase

Συνδέστε το project Supabase για συγχρονισμό εγγραφών βάσης δεδομένων, δεδομένων πιστοποίησης χρηστών, εκδηλώσεων αποθήκευσης αρχείων και αλλαγών σε πραγματικό χρόνο για αυτοματοποίηση αφοσίωσης πελατών.

Επισκόπηση

ΙδιότηταΤιμή
ΠλατφόρμαSupabase
ΚατηγορίαΒάση Δεδομένων & Backend
Πολυπλοκότητα ΡύθμισηςΕύκολη
Επίσημη ΕνσωμάτωσηΝαι
Δεδομένα που ΣυγχρονίζονταιΧρήστες, Πίνακες, Αποθήκευση, Εκδηλώσεις
Διαθέσιμες Δεξιότητες11
Τύπος APIREST (PostgREST) + Realtime WebSocket
Επίσημη Τεκμηρίωσηsupabase.com/docs

Χαρακτηριστικά

  • Αυτόματα δημιουργούμενο REST API, λειτουργίες CRUD σε οποιονδήποτε πίνακα Postgres μέσω PostgREST, χωρίς κώδικα
  • Συγχρονισμός χρηστών Auth, Συγχρονισμός χρηστών Supabase Auth (email, τηλέφωνο, κοινωνικές συνδέσεις) στην πλατφόρμα αφοσίωσης
  • Εγγραφές σε πραγματικό χρόνο, Ακρόαση εκδηλώσεων INSERT, UPDATE, DELETE σε οποιονδήποτε πίνακα σε πραγματικό χρόνο
  • Ασφάλεια Επιπέδου Γραμμής, Όλη η πρόσβαση API σέβεται τις πολιτικές RLS Postgres για ασφαλή πολυ-ενοικιαστή δεδομένα
  • Ενσωμάτωση αποθήκευσης, Παρακολούθηση μεταφορτώσεων αρχείων και διαχείριση πόρων σε buckets αποθήκευσης
  • Edge Functions, Κλήση serverless συναρτήσεων Deno για προσαρμοσμένη λογική και webhooks
  • Αναζήτηση πλήρους κειμένου, Αξιοποίηση δυνατοτήτων αναζήτησης πλήρους κειμένου Postgres μέσω API

Προαπαιτούμενα

Πριν ξεκινήσετε, βεβαιωθείτε ότι διαθέτετε:

  1. Project Supabase (app.supabase.com)
  2. Το URL API και τα κλειδιά API του project σας (στις Ρυθμίσεις → API)
  3. Λογαριασμό Tajo με πρόσβαση API

Κλειδιά API

Το Supabase παρέχει δύο κλειδιά: anon (δημόσιο, σέβεται RLS) και service_role (παρακάμπτει RLS, πρόσβαση διαχειριστή). Χρησιμοποιήστε service_role για ενσωματώσεις πλευράς server και anon για πλευράς client.

Πιστοποίηση

Το Supabase χρησιμοποιεί πιστοποίηση με κλειδί API. Κάθε αίτημα απαιτεί header apikey και προαιρετικά Bearer token Authorization για πρόσβαση με εύρος χρήστη.

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

Διαμόρφωση

Βασική Ρύθμιση

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

Αντιστοίχιση Πεδίων

Αντιστοίχηση στηλών πίνακα Supabase σε χαρακτηριστικά πλατφόρμας αφοσίωσης:

Προεπιλεγμένες Αντιστοιχίσεις Χρήστη

Parameter Type Description
email required
string

Email χρήστη από Supabase Auth (μοναδικό αναγνωριστικό)

phone optional
string

Αριθμός τηλεφώνου για αφοσίωση SMS/WhatsApp

user_metadata.full_name optional
string

Εμφανιζόμενο όνομα από μεταδεδομένα χρήστη Auth

user_metadata.avatar_url optional
string

URL εικόνας προφίλ

created_at optional
timestamp

Χρονική σφραγίδα δημιουργίας λογαριασμού

last_sign_in_at optional
timestamp

Πιο πρόσφατη σύνδεση για βαθμολόγηση αφοσίωσης

app_metadata.provider optional
string

Πάροχος Auth (email, google, github, κ.λπ.)

confirmed_at optional
timestamp

Χρονική σφραγίδα επιβεβαίωσης email

Αντιστοίχιση Προσαρμοσμένου Πίνακα

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

Endpoints API

Το REST API Supabase δημιουργείται αυτόματα από το σχήμα βάσης δεδομένων σας στο https://<ref>.supabase.co/rest/v1/.

EndpointΜέθοδοςΠεριγραφή
/rest/v1/{table}GETΕρώτηση γραμμών με φιλτράρισμα, ταξινόμηση, σελιδοποίηση
/rest/v1/{table}POSTΕισαγωγή γραμμών (υποστηρίζει μαζική και upsert)
/rest/v1/{table}PATCHΕνημέρωση γραμμών που ταιριάζουν με φίλτρα
/rest/v1/{table}DELETEΔιαγραφή γραμμών που ταιριάζουν με φίλτρα
/rest/v1/rpc/{function}POSTΚλήση συνάρτησης Postgres
/auth/v1/signupPOSTΔημιουργία νέου χρήστη
/auth/v1/token?grant_type=passwordPOSTΣύνδεση με κωδικό
/auth/v1/userGETΛήψη τρέχοντος χρήστη
/auth/v1/admin/usersGETΛίστα όλων των χρηστών (service_role)
/storage/v1/object/{bucket}/{path}POSTΜεταφόρτωση αρχείου
/storage/v1/object/list/{bucket}POSTΛίστα αρχείων σε bucket
/functions/v1/{function_name}POSTΚλήση Edge Function

Τελεστές Φιλτραρίσματος

ΤελεστήςΠεριγραφήΠαράδειγμα
eqΊσο?status=eq.active
neqΔιάφορο?status=neq.deleted
gt, gteΜεγαλύτερο από?amount=gt.100
lt, lteΜικρότερο από?created_at=lt.2024-01-01
like, ilikeΑντιστοίχηση μοτίβου?name=ilike.%john%
inΣε πίνακα?status=in.(active,trial)
isΈλεγχος null?deleted_at=is.null

Εκδηλώσεις

Εκδηλώσεις Auth

ΕκδήλωσηΕνεργοποιητήςΠερίπτωση Χρήσης
user.signed_upΕγγραφή νέου χρήστηΣειρά καλωσορίσματος
user.signed_inΣύνδεση χρήστηΠαρακολούθηση δραστηριότητας
user.updatedΑλλαγές προφίλΣυγχρονισμός δεδομένων
user.deletedΔιαγραφή λογαριασμούΡοές εργασίας καθαρισμού

Εκδηλώσεις Βάσης Δεδομένων (Realtime)

ΕκδήλωσηΕνεργοποιητήςΠερίπτωση Χρήσης
INSERTΠροσθήκη νέας γραμμήςΕιδοποιήσεις νέας παραγγελίας/πελάτη
UPDATEΤροποποίηση γραμμήςΡοές εργασίας αλλαγής κατάστασης
DELETEΑφαίρεση γραμμήςΑνίχνευση αποχώρησης

Εκδηλώσεις Webhook

ΕκδήλωσηΕνεργοποιητήςΠερίπτωση Χρήσης
auth.user.createdΕγγραφή χρήστη μέσω webhookΕνεργοποίηση onboarding
storage.object.createdΜεταφόρτωση αρχείουΕπεξεργασία πόρων

Παραδείγματα Κώδικα

Αρχικοποίηση Συνδέσμου

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

Συγχρονισμός Χρηστών σε Επαφές

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

Ακρόαση Αλλαγών σε Πραγματικό Χρόνο

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

Ερώτηση και Τμηματοποίηση

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

Όρια Ρυθμού

Όρια Ρυθμού API

Τα όρια ρυθμού Supabase εξαρτώνται από το πλάνο σας. Δωρεάν επίπεδο: 500 αιτήματα/λεπτό. Pro: 1.000 αιτήματα/δευτερόλεπτο. Επικοινωνήστε με το Supabase για Enterprise όρια.

ΠλάνοΌριο ΡυθμούΣυνδέσεις Realtime
Free500 αιτ./λεπτό200 ταυτόχρονες
Pro1.000 αιτ./δευτ.500 ταυτόχρονες
Team2.000 αιτ./δευτ.1.000 ταυτόχρονες
EnterpriseΠροσαρμοσμένοΠροσαρμοσμένο

Αντιμετώπιση Προβλημάτων

Συνήθη Προβλήματα

ΠρόβλημαΑιτίαΛύση
401 UnauthorizedΜη έγκυρο ή ληγμένο κλειδί APIΕλέγξτε κλειδιά API στο Supabase Dashboard → Ρυθμίσεις → API
403 ForbiddenΗ πολιτική RLS αποκλείει πρόσβασηΧρησιμοποιήστε κλειδί service_role για λειτουργίες διαχειριστή ή ελέγξτε πολιτικές RLS
Δεν υπάρχουν εκδηλώσεις realtimeΤο Realtime δεν είναι ενεργοποιημένο για τον πίνακαΕνεργοποιήστε στη Βάση Δεδομένων → Replication → προσθέστε πίνακα στη δημοσίευση
Κενά αποτελέσματα ερωτήματοςΤο RLS φιλτράρει όλες τις γραμμέςΕπαληθεύστε ότι οι πολιτικές RLS επιτρέπουν στον πιστοποιημένο ρόλο να διαβάζει
Αποτυχία μεταφόρτωσης αποθήκευσηςΠολιτικές bucketΕλέγξτε ότι το bucket αποθήκευσης είναι δημόσιο ή έχει σωστές πολιτικές RLS

Λειτουργία Εντοπισμού Σφαλμάτων

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

Δοκιμή Σύνδεσης

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)

Βέλτιστες Πρακτικές

  1. Χρησιμοποιήστε κλειδί service_role μόνο πλευράς server, Μην το εκθέτετε ποτέ σε κώδικα client
  2. Ενεργοποιήστε RLS σε όλους τους πίνακες, Ακόμα και με service_role, σχεδιάστε με RLS για άμυνα σε βάθος
  3. Χρησιμοποιήστε Realtime για συγχρονισμό βάσει εκδηλώσεων, Πιο αποδοτικό από polling για αλλαγές
  4. Λειτουργίες batch, Χρησιμοποιήστε μαζικές εισαγωγές και φίλτρο in για λειτουργίες υψηλού όγκου
  5. Αντιστοιχίστε μεταδεδομένα χρήστη, Αποθηκεύστε πεδία σχετικά με αφοσίωση στο user_metadata κατά την εγγραφή
  6. Χρησιμοποιήστε Edge Functions για webhooks, Επεξεργαστείτε εισερχόμενα webhooks με Supabase Edge Functions για χαμηλή καθυστέρηση

Ασφάλεια

  • Πιστοποίηση Κλειδιού API, Όλα τα αιτήματα απαιτούν έγκυρα κλειδιά API
  • Ασφάλεια Επιπέδου Γραμμής (RLS), Εγγενής στο Postgres έλεγχος πρόσβασης ανά γραμμή
  • Επαλήθευση JWT, Τα tokens πιστοποίησης είναι υπογεγραμμένα JWT που επαληθεύονται σε κάθε αίτημα
  • SSL/TLS, Όλες οι συνδέσεις κρυπτογραφούνται κατά τη μεταφορά
  • SOC 2 Type II, Το Supabase είναι συμβατό με SOC 2
  • Περιορισμοί Δικτύου, Προαιρετικό allowlisting IP σε πληρωμένα πλάνα

Σχετικοί Πόροι

Subscribe to updates

developer-docs

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

auto-detect
AI Βοηθός

Γεια! Ρωτήστε με οτιδήποτε για την τεκμηρίωση.