Estoy tratando de tener un campo en el esquema basado en otro.
Encontré esta solución:
const PostSchema = new Schema({ title: { type: String, required: true }, titleUpperCase: { type: String } content: { type: String, required: true }, creation: { type: Date, default: Date.now() } }) PostSchema.pre('save', (next) => { this.titleUpperCase = this.title.toUpperCase() next() }) En el código anterior, quiero que el valor del campo titleUpperCase se base en el campo de título, pero el problema es que aparece un error que dice: TypeError: Cannot read properties of undefined (reading 'title')
Debido a que está utilizando una función de flecha, la palabra clave "esto" no es lo que desea que sea. Básicamente, cada vez que utilice ganchos de mangosta como un gancho de guardado previo en este caso, siempre debe usar una función normal para una devolución de llamada.
PostSchema.pre('save', function(next) { this.titleUpperCase = this.title.toUpperCase() next() })Creo que esto debería funcionar.