Docs Menu
Docs Home
/ /

Tutorial: Integración con Prisma

Prisma es un mapeador relacional de objetos (ORM) de código abierto para Node.js. Es compatible con JavaScript y TypeScript, pero se usa principalmente con TypeScript para facilitar la escritura de código legible y con seguridad de tipos.

Advertencia

Compatibilidad de MongoDB con Prisma ORM v7

El controlador Node.js de MongoDB aún no es compatible con la versión 7 de Prisma ORM. Utilice la última versión disponible 6.x de Prisma ORM al trabajar con MongoDB.

Los esquemas ayudan a los desarrolladores a evitar problemas de inconsistencia de datos a lo largo del tiempo al definir la estructura de los documentos de su colección. Si bien es posible definir un esquema a nivel de base de datos en MongoDB, Prisma permite definirlo a nivel de aplicación. Dado que el Cliente Prisma conoce el esquema, los desarrolladores que lo utilizan tienen acceso a consultas de autocompletado.

Generalmente, los datos a los que se accede conjuntamente deben almacenarse juntos en una colección de MongoDB. Prisma admite el uso de documentos incrustados para mantener los datos juntos. En casos donde se deben almacenar datos relacionados en colecciones de MongoDB separadas, se debe incluir el documento de un documento. _id campo en otro documento. Prisma agiliza este proceso y le ayuda a organizar los datos relacionados, a la vez que mantiene la integridad referencial de los datos.

Cuando utiliza referencias para modelar relaciones entre colecciones, puede agregar el atributo @relation a su esquema Prisma para permitir que Prisma Client acceda a esas relaciones, emule acciones referenciales y ayude a mantener la integridad referencial.

Para obtener más información sobre el modelado de datos eficiente en MongoDB, consulte Reducir las operaciones $lookup en el manual del servidor MongoDB.

MongoDB tiene un esquema flexible por defecto. Al introspeccionar una base de datos MongoDB existente con el comando prisma db pull, Prisma muestrea hasta 1000 documentos aleatorios de cada colección para inferir la estructura del esquema.

Si su colección contiene campos con tipos de datos incoherentes en varios documentos, Prisma asigna esos campos al Json tipo y genera una advertencia. Esto le permite leer todos los datos existentes, pero reduce las ventajas de la seguridad de tipos. Para solucionarlo, puede actualizar manualmente los datos para que usen tipos consistentes y, a continuación,prisma db pull ejecutar de nuevo para regenerar el esquema con las definiciones de tipos correctas. Para obtener más información, consulte Solución de conflictos de tipos.

Este tutorial muestra cómo realizar las siguientes acciones:

  • Descargue un ejemplo de aplicación Prisma

  • Configura tu esquema Prisma

  • Crear y rellenar una base de datos MongoDB con datos de muestra

  • Hacer que la aplicación de ejemplo sea compatible con MongoDB

  • Ejecutar la aplicación

1

Antes de comenzar este tutorial, asegúrese de tener los siguientes componentes preparados:

  • Una cuenta de MongoDB Atlas con un clúster configurado. Para ver las instrucciones, consulte la guía de introducción a MongoDB.

  • Node.js 1620v..1 o posterior.

2

Clone o descargue la aplicación de ejemplo del repositorio de ejemplos de Prisma.

Este ejemplo es una plataforma sencilla de gestión de contenido de blogs que utiliza una base de datos SQLite. Los siguientes pasos modifican la aplicación para usar MongoDB en lugar de SQLite.

3

Navegue al archivo prisma/schema.prisma en el directorio de la aplicación de ejemplo. En el objeto datasource db de este archivo, configure el campo provider como "mongodb" y el campo url como la URI de conexión de Atlas.

En el modelo User del mismo archivo, cambie el tipo de campo id de Int a String y establezca el valor predeterminado en auto(). La propiedad id debe asignarse al campo _id de MongoDB. También debe indicar a Prisma que establezca el tipo de dato de esta propiedad en ObjectId.

En el modelo Post, realice los mismos cambios en el campo id que en el modelo User. También debe cambiar el tipo de campo authorId de Int a String y establecer el tipo de dato en ObjectId.

Su archivo schema.prisma debería parecerse al siguiente:

generator client {
provider = "prisma-client-js"
}
datasource db {
provider = "mongodb"
url = "<your connection URI>"
}
model Post {
id String @id @default(auto()) @map("_id") @db.ObjectId
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
title String
content String?
published Boolean @default(false)
viewCount Int @default(0)
author User @relation(fields: [authorId], references: [id])
authorId String @db.ObjectId
}
model User {
id String @id @default(auto()) @map("_id") @db.ObjectId
email String @unique
name String?
posts Post[]
}

Este esquema define colecciones User y Post separadas en su base de datos MongoDB, donde cada Post contiene una referencia a un User.

Una vez que haya realizado estos cambios, navegue al directorio del proyecto en su terminal y ejecute los siguientes comandos para instalar las dependencias necesarias y generar el esquema:

npm install
npx prisma generate

Nota

Si realiza más cambios en el esquema, deberá volver a ejecutar el comando npx prisma generate para que los cambios surtan efecto.

4

Para completar la base de datos con datos de muestra, ejecute el archivo prisma/seed.ts en el proyecto de ejemplo ejecutando el siguiente comando:

npx prisma db seed

Esto crea las colecciones User y Post según lo definido por el archivo schema.prisma y las llena con datos de muestra.

5

Navegue al directorio src del proyecto de ejemplo. En los archivos pages/api/post/[id].ts y pages/api/publish/[id].ts, reemplace todas las instancias de Number(postId) por postId. Esto es necesario porque los campos id del esquema ahora son de tipo String en lugar de Int.

6

Para iniciar la aplicación, ejecute el siguiente comando desde el directorio del proyecto:

npm run dev

Acceda a http://localhost:3000 en su navegador web para ver y ejecutar la aplicación. Puede usarla para crear, redactar, publicar y eliminar entradas de blog. Puede consultar las definiciones de ruta de la API en la carpeta pages/api del proyecto de ejemplo.

Si sus colecciones de MongoDB contienen campos que usan tipos de datos inconsistentes en los documentos, Prisma Client puede generar errores al consultar datos que no coinciden con el tipo esperado de su esquema.

Puede realizar las siguientes acciones para solucionar este problema:

  1. Revise las advertencias y los comentarios en su esquema Prisma después de ejecutar prisma db pull para identificar los campos que usan tipos conflictivos.

  2. Actualiza tus datos para utilizar tipos consistentes en todos los documentos de la colección.

  3. Ejecute prisma db pull nuevamente para regenerar su esquema que incluye los tipos corregidos.

Alternativamente, puedes dejar el campo como tipo Json si necesitas mantener la flexibilidad. Sin embargo, esto reduce los beneficios de seguridad de tipos que proporciona Prisma.

Para obtener más información sobre Prisma, consulte la documentación de Prisma.

Para ver y descargar una versión completa de la aplicación en este tutorial, consulte el repositorio de GitHub prisma-mongodb-nextjs-example.

Volver

Cifrado consultable con Mongoose

En esta página