Interroga il tuo database con l'SDK JavaScript
I flussi quotidiani di aura.db, le regole che rifiutano le chiamate non sicure e come proteggere una tabella con sicurezza a livello di riga.
1. Leggi le righe
aura.from('todos') è una scorciatoia per aura.db.from('todos'). Ogni chiamata restituisce { data, error } e non genera mai un'eccezione, vedere opzioni ed errori client .
Catena di filtri: eq, neq, gt, gte, lt, lte, like, ilike, in, is e gli altri elencati nella riferimento database. Per una pagina di righe, utilizzare range(from, to).
2. Inserisci, aggiorna ed elimina
Due regole ti proteggono dagli errori:
- Un inserimento batch richiede le stesse chiavi in ogni riga. Righe con chiavi diverse restituiscono
400conAll object keys must match. Compila le chiavi mancanti connull. update()edelete()senza filtro vengono rifiutati dal client con il codice di erroreunfiltered_mutation, prima che venga inviata qualsiasi richiesta. Per modificare ogni riga di proposito, esegui SQL da un server.
3. Una riga, molte righe, contano
count: 'exact' conta ogni riga corrispondente. 'planned' e 'estimated' sono più veloci su tabelle molto grandi e approssimative.
4. Proteggi un tavolo
La sicurezza a livello di riga è disattivata su una nuova tabella. Con la chiave pubblica chiunque può leggerlo e scriverlo. Abilitalo, quindi aggiungi le policy che ti servono:
I ruoli del database sono aura_anon, aura_authenticated e aura_service_role. auth.uid() è NULL per la chiave pubblica e un ID utente per un utente che ha effettuato l'accesso. Vedere Sicurezza a livello di riga.
Una chiave service_role bypassa RLS in base alla progettazione: tienila sul tuo server.
5. Funzioni SQL e rpc
Crea una funzione da un server, quindi chiamala da qualsiasi luogo con rpc():
grant_execute_toè necessario per chiamarlo. Senza di esso, nessuno può eseguire la funzione. Un ruolo non elencato ottiene403 permission denied for function. Sono accettati siaauthenticatedcheaura_authenticated.- Una nuova funzione è richiamabile dopo alcuni secondi. Fino a quando l'API non ricarica il proprio schema,
rpc()restituisce404 Could not find the function. - La creazione di funzioni con SQL non elaborato (
CREATE FUNCTION) è rifiutata: utilizzarecreateFunction.
6. Eseguire SQL da un server
db.sql() necessita di una chiave service_role. Rifiuta un DELETE senza un WHERE e non legge i cataloghi di sistema come pg_class o pg_roles. Per elencare le tue tabelle, usa admin.db.schema().