hola a todos, tengo una pregunta sobre cómo conectar nextJs a mongodb al iniciar el servidor. como saben, nextjs es fs framework y estoy migrando de node/express a él, pero mi problema es cómo conectar el servidor a la base de datos al inicio del servidor como lo hice en express. ¿Ahora hay dónde poner mi código de inicialización en nextjs? ¿Estoy diciendo que es correcto? vi un código para eso, pero había códigos mecanografiados que no estoy familiarizado con ellos
por otro lado, puedo hacer eso en funciones del lado del servidor como getStaticProps o getServerSideProps este es mi código dbinit.js
import mongoose from "mongoose"; export const dbStatus = () => mongoose.connection.readyState; export default function dbConnect() { if (dbStatus == 1) return "database is connected"; mongoose.connect( `mongodb://localhost:${process.env.DBPORT}/${process.env.DBNAME}` ); }índice.js
export async function getServerSideProps() { const result = await dbConnect(); console.log(dbStatus()); return { props: {}, }; }con este código puedo conectarme a mongodb pero hay algunos problemas y el más importante es que mycode no es cleancode
En NextJS, podemos conectar MongoDB como middleware. Esto es muy similar al enfoque de middleware Express como se muestra a continuación.
// middleware/database.js import { MongoClient } from 'mongodb'; import nextConnect from 'next-connect'; const client = new MongoClient('{YOUR-MONGODB-CONNECTION-STRING}', { useNewUrlParser: true, useUnifiedTopology: true, }); async function database(req, res, next) { if (!client.isConnected()) await client.connect(); req.dbClient = client; req.db = client.db('MCT'); return next(); } const middleware = nextConnect(); middleware.use(database); export default middleware;Para obtener más detalles, puede consultar este documento oficial de instrucciones paso a paso. Aquí está el repositorio de ejemplo utilizado.