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.
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
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);
}
});
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"],
});
Com essa configuração, você deve conseguir utilizar 100% do mongoose no seu projeto com Nitro. Até logo 👋👋👋👋👋
Top comments (0)