Mongoose: Bukan fungsi ERROR - this.isModified bukan fungsi

Dibuat pada 18 Sep 2016  ·  11Komentar  ·  Sumber: Automattic/mongoose

Ketika saya menggunakan kode berikut:

userSchema.pre('save', (done) => {
  if(this.isModified('password')) {
    bcrypt.hash(this.password, null, null, (err, hash) => {
      if(err) return next(err);

      this.password = hash;
      this.updated_at = new Date().toISOString();
      done();
    });
  } else {
    return done();
  }
});

Saya menerima Kesalahan berikut:

TypeError: this.isModified is not a function
    at model.userSchema.pre (C:\code\project\core\models\user.js:26:11)
    at _next (C:\code\project\node_modules\hooks-fixed\hooks.js:62:30)
    at fnWrapper (C:\code\project\node_modules\hooks-fixed\hooks.js:186:8)
    at model.Object.defineProperty.value.fn (C:\code\project\node_modules\mongoose\lib\schema.js:221:11)
    at _next (C:\code\project\node_modules\hooks-fixed\hooks.js:62:30)
    at fnWrapper (C:\code\project\node_modules\hooks-fixed\hooks.js:186:8)
    at C:\code\project\node_modules\mongoose\lib\schema.js:196:17
    at C:\code\project\node_modules\kareem\index.js:127:16
    at _combinedTickCallback (internal/process/next_tick.js:67:7)
    at process._tickCallback (internal/process/next_tick.js:98:9)

Masalah:

  • this bukan Dokumen, Kueri, atau Skema. Nilainya adalah {}

Bagaimana saya bisa menyelesaikannya?

Komentar yang paling membantu

Anda menggunakan operator panah untuk panggilan balik, yang mengubah cakupan this . Jika Anda mendefinisikan panggilan balik biasa, Anda seharusnya baik-baik saja, misalnya:

userSchema.pre('save',  function(done)  {
});

Semua 11 komentar

Anda menggunakan operator panah untuk panggilan balik, yang mengubah cakupan this . Jika Anda mendefinisikan panggilan balik biasa, Anda seharusnya baik-baik saja, misalnya:

userSchema.pre('save',  function(done)  {
});

Baik. Terima kasih. Berhasil.

Perbaiki eslintrc Anda

Pada Selasa, 29 Nov 2016 jam 05:16, Nick Rameau [email protected]
menulis:

Apakah ada cara untuk melakukannya dengan fungsi panah? Saya menggunakan ES6 dan saya
eslintrc mengeluh tentang panggilan balik biasa.


Anda menerima ini karena Anda berlangganan utas ini.
Balas email ini secara langsung, lihat di GitHub
https://github.com/Automattic/mongoose/issues/4537#issuecomment-263567210 ,
atau matikan utasnya
https://github.com/notifications/unsubscribe-auth/ABi5KbZG27HnF2sX2RwDIhTp4Rz1lIG_ks5rDCW1gaJpZM4J_8-c
.

Saya juga mengalami masalah ini. Terima kasih atas bantuannya @VictorGerritsenQLVR!

Apakah ada cara untuk mengubah kode untuk mengakomodasi operator panah, daripada menggunakan function(next) ?

@domarp-j Pertanyaan bagus. Saya memikirkannya dan mencoba mencari tahu tetapi saya tidak dapat menemukan sesuatu yang lebih mudah daripada hanya beralih ke fungsi panggilan balik biasa. Mungkin orang lain telah melakukannya tho. Saya akan mengawasi masalah ini.

Tidak ada cara untuk melakukannya, panah gemuk menggunakan cakupan leksikal untuk konteks, tidak ada jalan lain.

memiliki masalah yang sama, terima kasih atas bantuannya

Hai, terjebak pada masalah yang sama dengan fungsi panah es6. Terima kasih banyak!

bagus terima kasih

Terima kasih , bekerja untuk saya juga.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat