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

Kait Pra-Simpan Mongoose diaktifkan, tetapi Tidak Menyimpan Bidang Tambahan (TIDAK menggunakan model.update)

Anda melewatkan this konteks di sini,

.pre('save', function(next) {
  Project.findOne({_id: this.project}).select('numberSeq').exec(function(err, doc) {
    if (err) {
      console.log(err);
    }
    console.log('pre-save hook firing');
      this.number = doc.numberSeq;
      console.log(this.number);
      next();
    });
})

di mana Anda mengatakan:

this.number = doc.numberSeq;
console.log(this.number);

sebenarnya mengacu pada fungsi panggilan balik dari kueri findOne, sehingga Anda berakhir dengan console.log yang benar dan data yang salah dimasukkan.

Anda dapat mengingat konteks kait pra-penyimpanan ini, dan kemudian memperbarui nomor menggunakan konteks itu di dalam panggilan balik. seperti di bawah ini:

.pre('save', function(next) {
  var tat=this;
  Project.findOne({_id: this.project}).select('numberSeq').exec(function(err, doc) {
    if (err) {
      console.log(err);
    }
    console.log('pre-save hook firing');
      tat.number = doc.numberSeq;
      console.log(tat.number);
      next();
    });
})



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Metode kursor agregasi apa yang didukung oleh driver Nodejs?

  2. Setel kata sandi ke database mongo meteor

  3. Bagaimana cara mendeteksi apakah serializer mongodb sudah terdaftar?

  4. MongoDB - Indeks tidak digunakan saat menyortir dan membatasi kueri jarak jauh

  5. Cara bergabung ke dua koleksi tambahan dengan ketentuan