Te sugerimos que revises esta respuesta en un entorno controlado antes de enviarlo a producción, saludos.
Solución:
Tengo el mismo problema. mi problema era cambiar un array dentro de db, luego, cuando intento usar .save(), no entendió que cambié nada, entonces .save() no funcionó. Solo uso markModified() antes de usar .save() y mi problema se resuelve.
este es mi código con problema: (no funciona)
club.members[index].name = new_name;
club.save();
este es mi código resuelto: (trabajando)
club.members[index].name = new_name;
club.markModified('members');
club.save();
¡disfrutar!
No voy a eliminar esta pregunta porque las personas también pueden encontrar este problema. En realidad, el problema no estaba relacionado con MongoDb o Mongoose. Cuando usted llama Object.save()
cadena de responsabilidad es como a continuación:
- Esquema.pre(“guardar”)
- Guardar datos en dabe
- Esquema.post(“guardar”)
Así que si bloqueas pre("save")
y no llames next()
controlador no podrá guardar su documento. Este fue mi caso, se me olvidó el next()
llame dentro de una declaración if e intenté encontrar el error durante más de 3 horas.
user.pre("save", function(next)
if(!this.trial)
//do your job here
next();
Cuando this.trial == true
el siguiente controlador no será accesible.
Para evitar errores como este, debemos cuidar la cobertura de sucursales, los reporteros pueden mostrarnos códigos no probados. Su problema podría estar relacionado con esto también. Asegúrate de llamar next()
si su documento debe guardarse.
Versión fija
user.pre("save", function(next)
if(!this.trial)
//do your job here
next();
Esto suena loco… y he estado tratando de solucionar este problema durante horas. Miré tantas publicaciones de desbordamiento de pila… es increíble.
¿Y sabes lo que era? No estaba especificando la base de datos al final de la url.
Entonces, en lugar de
"mongodb://127.0.0.1:27017/test"
Yo Tuve
"mongodb://127.0.0.1:27017
Perdí un día entero en esto. Realmente desearía que me dieran errores de algún tipo. Guardar un registro siempre regresaba bien. Y en el registro de la base de datos, me estaba conectando bien. Pero realmente necesitaba mirar los detalles. Sí, se estaba conectando a la instancia de mongo, pero no a la base de datos en sí. ¡puaj!
Si te gusta la informática, tienes la libertad de dejar un enunciado acerca de qué le añadirías a este enunciado.