DEV Community

Cover image for Inicializando o mongoose no Nitro (a forma fácil, rápida e talvez a única...)
Sidney Alex
Sidney Alex

Posted on

Inicializando o mongoose no Nitro (a forma fácil, rápida e talvez a única...)

Oi! Nem eu esperava gostar tanto de escrever por aqui. No post passado expliquei como criar uma REST API simples utilizando o Nitro e o Prisma combinado ao MongoDB.

Acontece que o Prisma não é o ODM mais famoso do MongoDB no universo JavaScript/Node. A biblioteca mais utilizada (e acredito que vai ser assim por muito tempo) é o mongoose.

Vamos começar com a estrutura padrão do Nitro.

browsercode
Se você não sabe como chegamos aqui, dá uma olhadinha no post anterior.

Instalando o mongoose

Dentro do projeto, execute o comando a seguir para instalar o mongoose:

npm i mongoose
Enter fullscreen mode Exit fullscreen mode

Instanciando o mongoose

Diferente do Prisma, o mongoose não cria as conexões automaticamente. Precisamos criar uma instancia do mongoose no inicio da nossa aplicação, mas como fazer isso se o Nitro inicia automaticamente e todos os arquivos que criamos são rotas?

Para isso, o Nitro possui um sistema de plugins customizados. Segundo a documentação, cada plugin que escrevemos é executado de forma síncrona na primeira inicialização do servidor, que é o lugar mais adequado para inicializar o mongoose no Nitro.

Vamos criar uma pasta chamada plugins na raiz do nosso projeto, dentro dela criaremos um arquivo chamado mongooseConnect.ts. O nome pode ser qualquer um de sua escolha.

Dentro do arquivo escreveremos o seguinte conteúdo:

//plugins/mongooseConnect.ts

// Importação do mongoose
import mongoose from "mongoose";

// Definição do plugin
export default defineNitroPlugin(async (nitroApp) => {
  try {
    // inicializando a conexão com o mongodb
    await mongoose.connect("SUA URI DE CONEXÃO COM O MONGODB");
    console.log("MongoDB conectado");
  } catch (error) {
    console.error("Conexão com o MongoDB falhou", error);
  }
});

Enter fullscreen mode Exit fullscreen mode

Para que o plugin funcione, precisamos registra-lo no arquivo de configuração do Nitro, o nitro.config.ts. Faremos o registro da seguinte forma:

//nitro.config.ts

import { defineNitroConfig } from "nitropack";

export default defineNitroConfig({
  // registrando o plugin
  plugins: ["./plugins/mongooseConnect.ts"],
});


Enter fullscreen mode Exit fullscreen mode

Com essa configuração, você deve conseguir utilizar 100% do mongoose no seu projeto com Nitro. Até logo 👋👋👋👋👋

Top comments (0)