Prisma Postgres y Astro
Prisma Postgres es una base de datos Postgres serverless totalmente administrada, diseñada para aplicaciones web modernas.
Conectar con Prisma ORM (Recomendado)
Sección titulada “Conectar con Prisma ORM (Recomendado)”Prisma ORM es la forma recomendada de conectarse a tu base de datos Prisma Postgres. Proporciona consultas con seguridad de tipos, migraciones y rendimiento global.
Requisitos previos
Sección titulada “Requisitos previos”- Un proyecto de Astro con un adaptador instalado para habilitar el renderizado bajo demanda (SSR).
Instalar dependencias e inicializar Prisma
Sección titulada “Instalar dependencias e inicializar Prisma”Ejecuta los siguientes comandos para instalar las dependencias necesarias de Prisma:
npm install prisma tsx --save-devnpm install @prisma/adapter-pg @prisma/clientUna vez instalado, inicializa Prisma en tu proyecto con el siguiente comando:
npx prisma init --db --output ./generatedTendrás que responder a algunas preguntas mientras configuras tu base de datos Prisma Postgres. Selecciona la región más cercana a tu ubicación y un nombre memorable para tu base de datos, como “Mi proyecto Astro”.
Esto creará:
- Un directorio
prisma/con un archivoschema.prisma - Un archivo
.envcon unaDATABASE_URLya establecida
Definir un modelo
Sección titulada “Definir un modelo”Incluso si no necesitas modelos de datos específicos todavía, Prisma requiere al menos un modelo en el esquema para poder generar un cliente y aplicar las migraciones.
El siguiente ejemplo define un modelo Post como marcador de posición. Añade el modelo a tu esquema para comenzar. Puedes eliminarlo o reemplazarlo de manera segura más adelante con modelos que reflejen tus datos reales.
generator client { provider = "prisma-client" output = "./generated"}
datasource db { provider = "postgresql" url = env("DATABASE_URL")}
model Post { id Int @id @default(autoincrement()) title String content String? published Boolean @default(false)}Aprende más sobre la configuración de tu entorno de Prisma ORM en la referencia del esquema de Prisma.
Generar cliente
Sección titulada “Generar cliente”Ejecuta el siguiente comando para generar el cliente de Prisma (Prisma Client) a partir de tu esquema:
npx prisma generateGenerar archivos de migración
Sección titulada “Generar archivos de migración”Ejecuta el siguiente comando para crear las tablas de la base de datos y generar el Prisma Client a partir de tu esquema. Esto también creará un directorio prisma/migrations/ con el historial de migraciones.
npx prisma migrate dev --name initCrear un cliente de Prisma
Sección titulada “Crear un cliente de Prisma”Dentro de /src/lib, crea un archivo prisma.ts. Este archivo inicializará y exportará tu instancia de Prisma Client para que puedas consultar tu base de datos en todo tu proyecto de Astro.
import { PrismaPg } from '@prisma/adapter-pg';import { PrismaClient } from '../../prisma/generated/client';
const connectionString = import.meta.env.DATABASE_URL;const adapter = new PrismaPg({ connectionString });const prisma = new PrismaClient({ adapter });
export default prisma;Consultar y mostrar datos
Sección titulada “Consultar y mostrar datos”El siguiente ejemplo muestra cómo obtener solo tus publicaciones publicadas con el Prisma Client ordenadas por id, y luego mostrar los títulos y el contenido de la publicación en tu plantilla de Astro:
---import prisma from '../lib/prisma';
const posts = await prisma.post.findMany({ where: { published: true }, orderBy: { id: 'desc' }});---
<html> <head> <title>Published Posts</title> </head> <body> <h1>Published Posts</h1> <ul> {posts.map((post) => ( <li> <h2>{post.title}</h2> {post.content && <p>{post.content}</p>} </li> ))} </ul> </body></html>La mejor práctica es manejar las consultas en una ruta de API. Para obtener más información sobre cómo usar Prisma ORM en tu proyecto de Astro, consulta la Guía de Astro + Prisma ORM.
Conectar con otros ORM y bibliotecas
Sección titulada “Conectar con otros ORM y bibliotecas”Puedes conectarte a Prisma Postgres a través de TCP directo utilizando cualquier otro ORM, biblioteca de base de datos o herramienta de tu elección. Crea una cadena de conexión directa en tu consola de Prisma para comenzar.
Requisitos previos
Sección titulada “Requisitos previos”- Un proyecto de Astro con un adaptador instalado para habilitar el renderizado bajo demanda (SSR).
- Una base de datos Prisma Postgres con una cadena de conexión TCP habilitada
Instalar dependencias
Sección titulada “Instalar dependencias”Este ejemplo utiliza pg, un cliente de PostgreSQL para Node.js para realizar una conexión TCP directa.
Ejecuta el siguiente comando para instalar el paquete pg:
npm install pgConsultar el cliente de tu base de datos
Sección titulada “Consultar el cliente de tu base de datos”Proporciona tu cadena de conexión al cliente pg para comunicarte con tu servidor SQL y obtener datos de tu base de datos.
El siguiente ejemplo de creación de una tabla e inserción de datos se puede utilizar para validar tu URL de consulta y la conexión TCP:
---import { Client } from 'pg';const client = new Client({ connectionString: import.meta.env.DATABASE_URL, ssl: { rejectUnauthorized: false }});await client.connect();
await client.query(` CREATE TABLE IF NOT EXISTS posts ( id SERIAL PRIMARY KEY, title TEXT UNIQUE, content TEXT );
INSERT INTO posts (title, content) VALUES ('Hello', 'World') ON CONFLICT (title) DO NOTHING;`);
const { rows } = await client.query('SELECT * FROM posts');await client.end();---
<h1>Posts</h1><p>{rows[0].title}: {rows[0].content}</p>