Consulta tu base de datos con el SDK de JavaScript
Los flujos cotidianos de aura.db, las reglas que rechazan llamadas inseguras y cómo proteger una tabla con seguridad a nivel de fila.
1. Leer filas
aura.from('todos') es un atajo para aura.db.from('todos'). Cada llamada devuelve { data, error } y nunca se produce; consulte las opciones y errores del cliente .
Cadena de filtros: eq, neq, gt, gte, lt, lte, like, ilike, in, is y los demás enumerados en la referencia de la base de datos . Para una página de filas, utilice range(from, to).
2. Insertar, actualizar y eliminar
Dos reglas te protegen de errores:
- Una inserción por lotes necesita las mismas claves en cada fila. Las filas con claves diferentes devuelven
400conAll object keys must match. Complete las claves que faltan connull. update()ydelete()sin filtro son rechazados por el cliente con el código de errorunfiltered_mutation, antes de enviar cualquier solicitud. Para cambiar cada fila a propósito, ejecute SQL desde un servidor.
3. Una fila, muchas filas, cuentan
count: 'exact' cuenta cada fila coincidente. 'planned' y 'estimated' son más rápidos en tablas muy grandes y aproximados.
4. Proteger una mesa
La seguridad a nivel de fila está desactivada en una tabla nueva. Con la clave pública, cualquiera puede leerla y escribirla. Habilítelo y luego agregue las políticas que necesita:
Las funciones de la base de datos son aura_anon, aura_authenticated y aura_service_role. auth.uid() es NULL para la clave pública y una identificación de usuario para un usuario que ha iniciado sesión. Consulte Seguridad a nivel de fila.
Una clave service_role omite RLS por diseño: manténgala en su servidor.
5. Funciones SQL y rpc
Cree una función desde un servidor, luego llámela desde cualquier lugar con rpc():
- Se requiere
grant_execute_topara llamarlo. Sin él, nadie puede ejecutar la función. Un rol que no aparece en la lista obtiene403 permission denied for function. Se aceptan tantoauthenticatedcomoaura_authenticated. - Se puede llamar a una nueva función después de unos segundos. Hasta que la API recargue su esquema,
rpc()devuelve404 Could not find the function. - Se rechaza la creación de funciones con SQL sin formato (
CREATE FUNCTION): usecreateFunction.
6. Ejecute SQL desde un servidor
db.sql() necesita una clave service_role. Rechaza un DELETE sin un WHERE y no lee catálogos del sistema como pg_class o pg_roles. Para enumerar sus tablas, use admin.db.schema().