Kullanıcı varlığı için bir Mongoose veritabanı şeması oluşturdum ve geçerli tarihi updated_at
alanına eklemek istiyorum. .pre('save', function() {})
geri aramayı kullanmaya çalışıyorum ama her çalıştırdığımda bana this
undefined olduğunu bildiren bir hata mesajı alıyorum. Ben de bunun için bir neden olabilir sanırım ES6 kullanmaya karar verdim (her şey çalışıyor olsa da). Benim Gelincik/Düğüm ES6 kod aşağıda:'this' bir Mongoose ön kaydetme kancasında tanımlanmamış
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
hata iletisi:
undefined.updated_at = currentDate.now;
^
TypeError: Cannot set property 'updated_at' of undefined
DÜZENLEME: vbranden cevabı @ kullanılarak ve standart bir işleve bir sözcük işlevinden bunu değiştirerek bu düzeltildi. Ancak, daha sonra, hatayı artık göstermese de, nesnede updated_at
alanını güncellemeyen bir sorun yaşadım. this.updated_at = currentDate.now
'u this.updated_at = currentDate
olarak değiştirerek bunu düzeltdim. fonksiyon bildirimi/ifadeler vs [Ok işlevini:
-https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions
değişikliği
sözcük kullanır onlar değiştirilebilir/eşdeğer musunuz? ] (http://stackoverflow.com/q/34361379/218196) –