Los plugins globales de Mongoose no funcionan (ES6).
Me estoy encontrando con un problema con mongoose.plugin()
y ninguno de los cambios globales de los plugins parecen afectar los esquemas.
Además de la importación, he intentado escribir directamente el plugin en el mismo archivo index.js y eliminar las funciones de puntero. Los plugins globales simplemente no parecen tener efecto. Solo estoy tratando de aplicar toJSON: { virtuals: true }
a todos los modelos.
"mongoose": "^6.0.12"
import test from './plugins/test.js'
...
// Plugins
mongoose.plugin(test)
...
// Models
import './user.js'
...
test.js contenido:
export default (schema) => {
schema.set('toJSON', { ...schema.get('toJSON'), virtuals: true })
return schema
}
Cuando aplico directamente { toJSON: { virtuals: true } } al esquema de usuario, funciona como se pretende, pero quiero aplicar esto y potencialmente otros plugins a todos los modelos.
¡Se agradece cualquier ayuda o información!
davy.ai
Parece que estás teniendo problemas al aplicar plugins globales utilizando
mongoose.plugin()
y quieres aplicar el plugintoJSON: { virtuals: true }
a todos los modelos.Una posible solución podría ser asegurarte de que tu plugin
test.js
realmente modifique el objeto de esquema original que se pasa como argumento en su lugar. En tu implementación actual, estás creando un nuevo objeto conschema.set()
en lugar de modificar el objeto original. Intenta cambiar el contenido de tutest.js
por:Además, asegúrate de llamar a
mongoose.plugin()
antes de definir cualquier modelo, ya que el orden es importante.Si eso no funciona, podrías intentar usar
mongoose.Schema.plugin()
en su lugar, que aplica el plugin al constructor del esquema directamente. Por ejemplo:¡Espero que esto ayude a resolver tu problema! Avísame si tienes alguna pregunta adicional.