Vas a construir: Una lista de productos leída de tu propia base de datos Postgres, con un cuadro de búsqueda que la filtra mientras escribes
Lee primero: Muestra datos de una API
En este tutorial conectas una base de datos Postgres, como una de Neon o Supabase, escribes una consulta SQL con un parámetro y le das valor a ese parámetro desde un cuadro de búsqueda para que la lista se filtre mientras el visitante escribe. Necesitas una base de datos Postgres accesible desde internet y un usuario con acceso de lectura.
Prepara una tabla
Crea datos de ejemplo
Si todavía no tienes una tabla para mostrar, abre el editor SQL de tu proveedor de base de datos y ejecuta:
sqlcreate table products (id serial primary key, name text not null, price numeric(8, 2) not null); insert into products (name, price) values ('Canvas tote', 24.00), ('Ceramic mug', 14.50), ('Linen apron', 32.00), ('Notebook', 9.90), ('Oak coaster set', 18.00), ('Wool blanket', 89.00);Encuentra los datos de conexión
En el dashboard de tu proveedor, abre los datos de conexión de la base de datos (en Neon y Supabase, presiona Connect en el proyecto). Copia el host, el puerto, el nombre de la base de datos, el usuario y la contraseña. Son las partes de una cadena de conexión como
postgresql://user:password@host:5432/database.
Conecta la base de datos
Agrega una integración PostgreSQL
Abre el espacio de trabajo Data desde la parte inferior de la barra lateral izquierda. Junto a Integrations, presiona + y elige PostgreSQL. Llámala
Shop database.Completa la conexión
En la tarjeta Connection, escribe el Host (por ejemplo
ep-cool-name.us-east-2.aws.neon.tech), el Port (normalmente5432), la Database y el User. Deja Ssl enrequire, o eligeverify-fullpara verificar también el certificado del servidor.Agrega la contraseña
En la tarjeta Secrets, escribe la Password del usuario de la base de datos. Se cifra en el servidor y no se vuelve a mostrar.
Créala y pruébala
Presiona Create integration y luego Run test en la tarjeta Test connection. Connected significa que Malla llegó a la base de datos y ejecutó una consulta simple. Un error muestra el mensaje y un código, por ejemplo una contraseña incorrecta o un host que no responde.
La integración Shop database aparece en Integrations, y su prueba dice Connected.
Consulta la tabla
Mira las tablas
Junto a Queries, presiona + y cámbiale el nombre a la consulta a
products. En Source, pon Integration enShop databasey Operation en List tables; luego presiona Run en la tarjeta Result. Ves todas las tablas que el usuario puede leer, con sus columnas.Escribe el SQL
Pon Operation en Query. En Sql, escribe:
sqlselect id, name, price from products where name ilike '%' || $1 || '%' order by name$1es un marcador de posición. Su valor viene de Params, nunca del texto SQL, así que un visitante no puede inyectar SQL a través de él.Dale un valor al parámetro
En Params, presiona Add item y escribe
"mug", con las comillas: cada ítem recibe un valor JSON, así que el texto necesita comillas y los números no. Max rows devuelve 200 filas si lo dejas vacío, y como máximo 1000.Devuelve las filas
La consulta devuelve un objeto con
rows,rowCount,columnsytruncated. En When it runs, pon Response path enrowspara que la consulta devuelva solo la lista. Presiona Run: el resultado es un producto, la taza de cerámica.
Agrega una búsqueda en vivo
Crea una variable de búsqueda
Junto a Page variables, presiona + y elige String. Cámbiale el nombre a
searchy deja el valor por defecto vacío.Dale valor al parámetro desde la variable
Selecciona la consulta
products. Junto al ítem"mug"en Params, presiona Use an expression (el botón ƒ) y reemplaza el valor porvars.search.En When it runs, elige Client. Ahora la consulta se ejecuta en el navegador al cargar y otra vez cada vez que cambia
vars.search. Debounce (ms) espera hasta que el visitante deja de escribir; el valor por defecto es 250 ms. El navegador le pide a Malla que ejecute la consulta, así que la contraseña nunca sale del servidor.Agrega el cuadro de búsqueda
De vuelta en el lienzo, presiona + en la pestaña Layers y elige Input. En la sección Field, pon Placeholder en
Buscar productosy Value ensearch. Ahora escribir en el cuadro escribe en la variable.Muestra los productos
Inserta una Collection list debajo del cuadro de búsqueda. En Collection list, pon Source en Expression e Items en
queries.products.data. Agrega dos textos dentro de Item y enlázalos aitem.nameeitem.priceen Typography. Pon Empty text enNingún producto coincide con tu búsqueda.
El lienzo muestra los seis productos, porque la búsqueda está vacía.
Prueba la búsqueda
Presiona ⌘↵ para ver la página y escribe
oaen el cuadro de búsqueda. Tras una breve pausa, la lista muestra solo el juego de posavasos. Escribexyzpara ver el texto de estado vacío. Presiona ⌘↵ otra vez para volver a editar.Publica
Presiona Publish y abre la página de staging. La búsqueda funciona igual para tus visitantes.
Tu página lee productos de tu propia base de datos y los filtra mientras los visitantes escriben.
Lo que aprendiste
- Una integración PostgreSQL guarda el host, la base de datos y el usuario, y mantiene la contraseña cifrada en el servidor.
- Los marcadores
$1,$2toman sus valores de Params, y un parámetro puede leer una variable. - Una consulta de cliente vuelve a pedir los datos cuando cambian las variables que lee, lo que convierte un input en una búsqueda en vivo.
Lee las guías en las que se basa este tutorial: