node.js - mongoosejs - node js mongoose model
''esto'' no está definido en un gancho guardado de Mongoose (1)
el problema es que su función de flecha utiliza léxico esta https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions
cambio
userSchema.pre("save", (next) => {
const currentDate = new Date
this.updated_at = currentDate.now
next()
})
a
userSchema.pre("save", function (next) {
const currentDate = new Date
this.updated_at = currentDate.now
next()
})
Esta pregunta ya tiene una respuesta aquí:
updated_at
un esquema de base de datos de Mongoose para una entidad de usuario y deseo agregar la fecha actual en un campo updated_at
. Estoy tratando de usar la .pre(''save'', function() {})
pero cada vez que lo ejecuto recibo un mensaje de error que me dice que no está definido. También he decidido usar ES6, lo que supongo que podría ser una razón para esto (aunque todo funciona). Mi código Mongoose / Node ES6 está a continuación:
import mongoose from ''mongoose''
mongoose.connect("mongodb://localhost:27017/database", (err, res) => {
if (err) {
console.log("ERROR: " + err)
} else {
console.log("Connected to Mongo successfuly")
}
})
const userSchema = new mongoose.Schema({
"email": { type: String, required: true, unique: true, trim: true },
"username": { type: String, required: true, unique: true },
"name": {
"first": String,
"last": String
},
"password": { type: String, required: true },
"created_at": { type: Date, default: Date.now },
"updated_at": Date
})
userSchema.pre("save", (next) => {
const currentDate = new Date
this.updated_at = currentDate.now
next()
})
const user = mongoose.model("users", userSchema)
export default user
El mensaje de error es:
undefined.updated_at = currentDate.now;
^
TypeError: Cannot set property ''updated_at'' of undefined
EDITAR: Corregido esto usando la respuesta de @ vbranden y cambiándola de una función léxica a una función estándar. Sin embargo, tuve un problema en el que, aunque ya no mostraba el error, no estaba actualizando el campo updated_at
en el objeto. Lo arreglé cambiando this.updated_at = currentDate.now
a this.updated_at = currentDate
.