Tengo una estructura de carpetas que se parece a esto
root/ pages/ models/ User.js utils/ plugin.js dbConnect.js Quiero poder cargar el complemento global /utils/plugin.js antes de la creación de mi modelo. Sin embargo, en nextjs, el modelo se crea antes de instalar el complemento. ¿Hay alguna manera de garantizar que el complemento global esté instalado antes de la creación del modelo?
dbConnect.js se copia de next.js/examples/with-mongodb-mongoose
// dbConnect.js import mongoose from 'mongoose' // loading global plugin console.log('loading plugin') mongoose.plugin(require('./plugin')) const MONGODB_URI = process.env.MONGODB_URI if (!MONGODB_URI) { throw new Error( 'Please define the MONGODB_URI environment variable inside .env.local' ) } /** * Global is used here to maintain a cached connection across hot reloads * in development. This prevents connections growing exponentially * during API Route usage. */ let cached = global.mongoose if (!cached) { cached = global.mongoose = { conn: null, promise: null } } async function dbConnect() { if (cached.conn) { return cached.conn } if (!cached.promise) { const opts = { bufferCommands: false, } cached.promise = mongoose.connect(MONGODB_URI, opts).then((mongoose) => { return mongoose }) } cached.conn = await cached.promise return cached.conn } export default dbConnect // User.js import { Schema, model } from 'mongoose' const UserSchema = new Schema({ firstName: String, lastName: String, }) console.log('creating user model') export default model('User', UserSchema)