MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Hak przed zapisem Mongoose uruchamia się, ale nie zapisuje dodatkowego pola (NIE przy użyciu modelu.update)

Tracisz this kontekst tutaj,

.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();
    });
})

gdzie mówisz:

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

w rzeczywistości odnosi się do funkcji zwrotnej zapytania findOne, więc otrzymujesz poprawny plik console.log i wstawione nieprawidłowe dane.

możesz zapamiętać ten kontekst haka przed zapisem, a później zaktualizować numer za pomocą tego kontekstu w wywołaniu zwrotnym. jak poniżej:

.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. mangusta:Sortowanie według identyfikatora

  2. Przenoszenie danych HDFS do MongoDB

  3. Zakres paginacji podczas zapytań i sortowania dynamicznych, nieunikatowych pól w mongodb

  4. Jak tworzyć zagnieżdżone zapytania w MongoDb, które działają jak zagnieżdżone zapytania wybierające Sql?

  5. Jak użyć pymongo, aby połączyć się z istniejącą kolekcją dokumentów/bazą danych?