← Todos los tutoriales
web-app 8 min

Listar Registros de una Base de Datos

La mayoría de las páginas muestran una lista — artículos, productos, usuarios, mensajes. El patrón es siempre el mismo: obtén el conteo, busca las filas, itera de 0 a conteo menos uno, renderiza cada una. Aprende este patrón una vez y puedes construir cualquier lista.

Paso 1: obtener el conteo. Paso 2: obtener todas las filas.

    GET "/posts" :\n        string count_res = db.query("SELECT CAST(COUNT(*) AS CHAR) as cnt FROM posts WHERE published = 1", "[]")\n        integer post_count = json.get(count_res, "data.rows.0.cnt").toInteger()\n\n        string posts_res = db.query("SELECT title, slug, excerpt FROM posts WHERE published = 1 ORDER BY created_at DESC", "[]")\n        string cards = ""

Obtén el conteo primero — lo necesitas para saber el rango del iterate. CAST(COUNT(*) AS CHAR) devuelve el conteo como string, luego .toInteger() lo convierte. Dos consultas se ejecutan en secuencia: el conteo primero, luego la obtención de todos los datos.

Paso 3: iterar por las filas y construir el HTML.

        iterate i in 0 to post_count - 1\n            string idx = i.toString()\n            string post_title = json.get(posts_res, "data.rows." + idx + ".title")\n            string post_slug = json.get(posts_res, "data.rows." + idx + ".slug")\n            string post_excerpt = json.get(posts_res, "data.rows." + idx + ".excerpt")\n            cards = cards + post_card(post_title, post_slug, post_excerpt)\n\n        return http.respond(200, "text/html", cards)
GET /posts → HTML list of all published posts

Construye la ruta de json.get dinámicamente: "data.rows." + idx + ".columna". Esto funciona para cualquier número de filas. El string cards crece con cada iteración — la concatenación es cómo ensamblas una lista de componentes.

Resumen rápido

  • Cuenta filas primero con COUNT(*), luego obtén el conjunto de resultados completo
  • CAST(COUNT(*) AS CHAR) + .toInteger() convierte el conteo a un entero
  • iterate i in 0 to count - 1 recorre cada fila
  • Accede a cada fila con json.get(result, "data.rows." + i.toString() + ".columna")
¡Copiado!