MongoDB.local SF, Jan 15: See the speaker lineup & ship your AI vision faster. Use WEB50 to save 50%
Find out more >
Menu Docs
Página inicial do Docs
/ /

Tutorial: Integração com Prisma

Prisma é um Object Relational Mapper (ORM) open source para Node.js Ele é compatível com o JavaScript e o Typescript, mas é usado principalmente com o Typescript para ajudá-lo a escrever código legível e seguro para o tipo.

Aviso

Suporte do MongoDB para Prisma ORM v7

O driver do MongoDB Node.js ainda não suporta a versão 7 do Prisma ORM. Use a versão mais recente disponível 6.x do Prisma ORM ao trabalhar com o MongoDB.

Os esquemas ajudam os desenvolvedores a evitar problemas de inconsistência de dados ao longo do tempo definindo a estrutura dos documentos da sua coleção. Enquanto você pode definir um esquema no nível do banco de dados dentro do MongoDB, o Prisma permite definir um esquema no nível do aplicação . Como o cliente Prisma está ciente do esquema, os desenvolvedores que usam o Prisma Client têm acesso a queries de preenchimento automático.

Geralmente, os dados acessados juntos devem ser armazenados juntos em uma coleção do MongoDB . O Prisma suporta o uso de documentos incorporados para manter os dados juntos. Em casos de uso em que é necessário armazenar dados relacionados em coleções separadas do MongoDB , você deve incluir o campo _id de um documento em outro documento. O Prisma simplifica esse processo e ajuda você a organizar esses dados relacionados, ao mesmo tempo em que mantém a integridade referencial dos dados.

Ao usar referências para modelar relações entre coleções, você pode adicionar o atributo @relation ao seu esquema de Prisma para permitir que o Prisma Client acesse essas relações, emule ações referenciais e ajude a manter a integridade referencial.

Para saber mais sobre modelagem de dados eficiente no MongoDB, consulte Reduzir operações de $lookup no manual do MongoDB Server.

O MongoDB tem um esquema flexível por padrão. Quando você introspecta um banco de dados MongoDB existente usando o comando prisma db pull, o Prisma amostra até 1000 documentos aleatórios de cada coleção para inferir a estrutura do esquema.

Se sua coleção contiver campos com tipos de dados inconsistentes entre documentos, o Prisma mapeará esses campos para o tipo Json e exibirá um aviso. Isso permite que você leia todos os dados existentes, mas reduz os benefícios de segurança do tipo. Para resolver isso, você pode atualizar manualmente os dados para usar tipos consistentes e, em seguida, executar prisma db pull novamente para gerar novamente o esquema com definições de tipo adequadas. Para obter mais informações, consulte Solução de problemas de conflitos de tipo.

Este tutorial mostra como executar as seguintes ações:

  • Baixe um exemplo de aplicação Prisma

  • Configure seu esquema Prisma

  • Criar e preencher um banco de dados MongoDB com dados de amostra

  • Torne o aplicação de exemplo compatível com MongoDB

  • Execute o aplicativo

1

Antes de iniciar este tutorial, verifique se você tem os seguintes componentes preparados:

  • Uma conta do MongoDB Atlas com um cluster configurado. Para visualizar as instruções, consulte o guia de Introdução do MongoDB.

  • Node.js v16.20.1 ou mais tarde.

2

Clone ou baixe o aplicação de exemplo no repositório de exemplos do Prisma.

Este exemplo é uma plataforma simples de gerenciamento de conteúdo de blog que usa um banco de dados SQLite. As etapas a seguir modificam o aplicação para usar MongoDB em vez de SQLite.

3

Navegue até o arquivo prisma/schema.prisma no diretório do aplicação de exemplo . No objeto datasource db deste arquivo, configure o campo provider para "mongodb" e o campo url para seu URI de conexão do Atlas .

No modelo User no mesmo arquivo, altere o tipo de campo id de Int para String e defina o valor padrão como auto(). A propriedade id deve mapear para o campo _id do MongoDB . Você também deve instruir Prisma a definir o tipo de dados dessa propriedade como ObjectId.

No modelo Post, execute as mesmas alterações no campo id que você fez no modelo User. Você também deve alterar o tipo de campo authorId de Int para String e configurar o tipo de dados para ObjectId.

Seu arquivo schema.prisma deve ser semelhante ao seguinte:

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[]
}

Esse esquema define collections User e Post separadas em seu banco de dados MongoDB , onde cada Post contém uma referência a um User.

Depois de fazer essas alterações, navegue até o diretório do projeto em seu terminal e execute os seguintes comandos para instalar as dependências necessárias e gerar o esquema:

npm install
npx prisma generate

Observação

Se você fizer mais alterações no esquema, deverá executar novamente o comando npx prisma generate para que as alterações entrem em vigor.

4

Para preencher o banco de dados com dados de amostra, execute o arquivo prisma/seed.ts no projeto de exemplo executando o seguinte comando:

npx prisma db seed

Isso cria as coleçãos User e Post, conforme definido pelo arquivo schema.prisma, e as preenche com dados de amostra.

5

Navegue até o diretório src do projeto de exemplo . Nos arquivos pages/api/post/[id].ts e pages/api/publish/[id].ts, substitua todas as instâncias de Number(postId) por postId. Isso é necessário porque os campos id no esquema agora são do tipo String em vez de Int.

6

Para iniciar o aplicação, execute o seguinte comando no diretório do projeto :

npm run dev

Navegue até http://localhost:3000 em seu navegador da web para visualizar e executar o aplicação. Você pode usar o aplicação para criar, redigir, publicar e excluir blog posts. Você pode fazer referência às definições de rota da API na pasta pages/api do projeto de exemplo .

Se suas coleções do MongoDB contiverem campos que usam tipos de dados inconsistentes entre documentos, o Prisma cliente poderá lançar erros ao consultar dados que não correspondem ao tipo esperado do seu esquema.

Você pode executar as seguintes ações para resolver isso:

  1. Revise os avisos e comentários em seu esquema Prisma depois de executar prisma db pull para identificar campos que usam tipos conflitantes.

  2. Atualize seus dados para usar tipos consistentes em todos os documentos da coleção.

  3. Execute prisma db pull novamente para regenerar seu esquema que inclui os tipos corrigidos.

Alternativamente, você pode deixar o campo como tipo Json se precisar manter a flexibilidade. No entanto, isso reduz os benefícios de segurança de tipo que o Prisma oferece.

Para saber mais sobre o Prisma, consulte a documentação do Prisma.

Para visualizar e baixar uma versão completa do aplicação neste tutorial, consulte o repositório Prisma-mongodb-nextjs-example do Github.

Voltar

Introdução ao Mongoose

Nesta página