node mongoosejs exports examples example create node.js mongodb mongoose ecmascript-6

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 .