MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Mongoose pre.save() async middleware tidak berfungsi seperti yang diharapkan

Anda menggunakan fungsi callback middleware paralel (dengan keduanya next dan done ), tetapi Anda tidak menyetel tanda paralel di schema.pre parameter sehingga menggunakan aturan serial.

Jadi, sertakan tanda paralel dalam panggilan Anda:

schema.pre("save", true, function(next, done) { ...

Atau beralih ke gaya panggilan balik middleware serial jika hanya itu yang Anda butuhkan:

schema.pre("save", function(next) {
    var self = this;

    model.findOne({email : this.email}, 'email', function(err, results) {
        if(err) {
            next(err);
        } else if(results) {
            console.warn('results', results);
            self.invalidate("email", "email must be unique");
            next(new Error("email must be unique"));
        } else {
            next();
        }
    });
});



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB memperbarui array bersarang

  2. Cara mengembalikan data dari MongoDB

  3. apakah map/reduce sesuai untuk menemukan median dan modus dari sekumpulan nilai untuk banyak record?

  4. Mongoose:apa perbedaan antara Model.create dan Collection.insert

  5. Basis data mongodb multi-penyewa berdasarkan data pegas