Voer een query uit op uw database met de JavaScript SDK
De dagelijkse stromen van aura.db, de regels die onveilige oproepen weigeren en hoe u een tabel kunt beschermen met beveiliging op rijniveau.
1. Lees rijen
aura.from('todos') is een snelkoppeling voor aura.db.from('todos'). Elke oproep retourneert { data, error } en gooit nooit, zie clientopties en fouten.
Filterketen: eq, neq, gt, gte, lt, lte, like, ilike, in, is en de andere vermeld in de databasereferentie . Voor een pagina met rijen gebruikt u range(from, to).
2. Invoegen, bijwerken en verwijderen
Twee regels beschermen u tegen fouten:
- Voor een batchinvoeging zijn in elke rij dezelfde sleutels nodig. Rijen met verschillende sleutels retourneren
400metAll object keys must match. Vul de ontbrekende sleutels metnull. update()endelete()zonder filter worden geweigerd door de client met de foutcodeunfiltered_mutation, voordat er een verzoek wordt verzonden. Om elke rij expres te wijzigen, voert u SQL uit vanaf een server.
3. Eén rij, veel rijen, telt
count: 'exact' telt elke overeenkomende rij. 'planned' en 'estimated' zijn sneller op zeer grote tafels en bij benadering.
4. Bescherm een tafel
Beveiliging op rijniveau is uitgeschakeld in een nieuwe tabel. Met de publieke sleutel kan iedereen deze lezen en schrijven. Schakel het in en voeg vervolgens het benodigde beleid toe:
De databaserollen zijn aura_anon, aura_authenticated en aura_service_role. auth.uid() is NULL voor de openbare sleutel en een gebruikers-ID voor een aangemelde gebruiker. Zie Beveiliging op rijniveau.
Een service_role sleutel omzeilt RLS door zijn ontwerp: bewaar hem op uw server.
5. SQL-functies en rpc
Maak een functie vanaf een server en roep deze vervolgens overal aan met rpc():
grant_execute_tois vereist om het aan te roepen. Zonder dit kan niemand de functie uitvoeren. Een rol die niet in de lijst staat, krijgt403 permission denied for function. Zowelauthenticatedalsaura_authenticatedworden geaccepteerd.- Na enkele seconden kan een nieuwe functie worden opgeroepen. Totdat de API zijn schema opnieuw laadt, retourneert
rpc()404 Could not find the function. - Het maken van functies met onbewerkte SQL (
CREATE FUNCTION) wordt geweigerd: gebruikcreateFunction.
6. Voer SQL uit vanaf een server
db.sql() heeft een service_role sleutel nodig. Het weigert een DELETE zonder een WHERE en leest geen systeemcatalogi zoals pg_class of pg_roles. Gebruik admin.db.schema() om uw tabellen weer te geven.