Estoy aprendiendo a usar Mongoose con NextJS y sigo encontrándome con este error. Revisé preguntas similares pero no supe cómo resolver esto. Seguí un video tutorial para implementar Mongoose paso a paso, pero en el video no ocurrió este problema. Además, odio decirlo de manera incorrecta, pero solo sucede "a veces". Parece que cada vez que ejecuto el servidor, la primera solicitud POST siempre pasa, las solicitudes GET también están bien, pero cuando intento varias solicitudes POST, ocurre. Después de reiniciar el servidor, vuelve a funcionar. Aquí está mi código:
import mongoose from "mongoose" const connection = {} async function dbConnect() { if (connection.isConnected) { retrun } const db = await mongoose.connect(process.env.MONGO_URI, { useNewUrlParser: true, useUnifiedTopology: true, }) connection.isConnected = db.connections[0].readyState console.log(connection.isConnected) } export default dbConnect const mongoose = require("mongoose") let NoteSchema = new mongoose.Schema({ email: { type: String, required: [true, "Please enter your email"] } }) module.exports = mongoose.model.Note || mongoose.model("Note", NoteSchema); import dbConnect from "../../utils/dbConnect" import Note from "../../models/Note" dbConnect() export default async (req, res) => { const { method } = req switch(method) { case "GET": try { const notes = await Note.find({}) res.status(200).json({ success: true, data: notes }) } catch (error) { res.status(400).json({ success: false }) } break case "POST": try { const note = await Note.create(req.body) res.status(201).json({ success: true, data: note }) } catch (error) { res.status(400).json({ success:false }) } break default: res.status(400).json({ success:false }) break } }Gracias por cualquier ayuda.
debe usar mongoose.models.Note en lugar de mongoose.model.Note
así que solo intenta:
module.exports = mongoose.models.Note || mongoose.model("Note", NoteSchema);Este método se utiliza para evitar la sobrescritura del modelo una vez compilado Mongoose