Mongoose: لا يوفر ربط الحفظ المسبق المستند

تم إنشاؤها على ٢ سبتمبر ٢٠١٥  ·  3تعليقات  ·  مصدر: Automattic/mongoose

هناك مشكلة في ربط الحفظ المسبق حيث يجب أن تعطيني كلمة "هذا" المستند الذي يتم حفظه ولكنه يعطي غير محدد بدلاً من ذلك.

import mongo from 'mongoose'
import crypt from 'bcryptjs'

const User = new mongo.Schema({
  username: {type: String, unique: true, required: true},
  password: {type: String, select: false, required: true}
  // token: {type: String}
})
//
User.pre('save', (next) => {
  console.log(this);
  if (this.isModified('password') || this.isNew) {
    crypt.genSalt(10, (err, salt) => {
      if (err) {
        next(err)
      } else {
        crypt.hash(user.password, salt, (err, hash) => {
          if (err) {
            next(err)
          } else {
            user.password = hash
            next()
          }
        })
      }
    })
  } else {
    next()
  }
})

export default mongo.model('User', User)

ماذا يمكن أن يكون الخطأ؟
ملاحظة: يحفظ بشكل طبيعي عند عدم استخدام الخطاف المسبق.

التعليق الأكثر فائدة

يربط سهم الدهون في ES6 this بالنطاق المعجمي ، وهي مجرد طريقة this داخل دالة السهم هو نفسه خارج وظيفة السهم. استخدم User.pre('save', function(next) {}); بدلاً من ذلك.

ال 3 كومينتر

يربط سهم الدهون في ES6 this بالنطاق المعجمي ، وهي مجرد طريقة this داخل دالة السهم هو نفسه خارج وظيفة السهم. استخدم User.pre('save', function(next) {}); بدلاً من ذلك.

هل هناك طريقة للحصول على الكائن باستخدام وظيفة السهم ؟، سأستخدم "الوظيفة" ولكن يتم فرض دليل نمط في المشروع.

لسوء الحظ ، لا تعتمد الخطافات المسبقة بشكل صريح على تمرير المستند عبر this بدلاً من استخدامه كمعامل. لن تعمل سهام الدهون مع هذا النموذج.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات