Ho creato uno schema di database Mongoose per un'entità Utente e desidero aggiungere la data corrente in un campo updated_at
. Sto tentando di utilizzare la richiamata .pre('save', function() {})
ma ogni volta che la eseguo viene visualizzato un messaggio di errore che mi informa che this
non è definito. Ho anche deciso di usare ES6, che credo possa essere una ragione per questo (tutto funziona però). Il mio Mongoose/code nodo ES6 è qui sotto:'questo' non è definito in un gancio di pre-salvataggio Mongoose
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
Il messaggio di errore è:
undefined.updated_at = currentDate.now;
^
TypeError: Cannot set property 'updated_at' of undefined
EDIT: Risolto questo utilizzando @ risposta di vbranden e cambiare da una funzione lessicale a una funzione standard. Tuttavia, ho avuto un problema in cui, mentre non mostrava più l'errore, non stava aggiornando il campo updated_at
nell'oggetto. Ho risolto questo problema modificando this.updated_at = currentDate.now
a this.updated_at = currentDate
.
Correlati: [funzione Freccia vs dichiarazione di funzione/espressioni: Sono equivalente/intercambiabile? ] (http://stackoverflow.com/q/34361379/218196) –