sql >> Database >  >> NoSQL >> MongoDB

Mongoose Pre-Save Hook wordt geactiveerd, maar slaat geen extra veld op (NIET model.update gebruiken)

Je mist de this context hier,

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

waar je zegt:

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

verwijst eigenlijk naar de callback-functie van de findOne-query, dus u krijgt de juiste console.log en verkeerde gegevens ingevoegd.

u kunt deze context van de pre-save hook onthouden en later het nummer bijwerken met behulp van die context in de callback. zoals hieronder:

.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. Is er een manier om Mongod uit webstorm (mac) te rennen

  2. Got Access wordt geweigerd toen ik 64-bit mongodb probeerde te installeren op Windows-server 2008

  3. Meerdere databasetechnologieën beheren met ClusterControl

  4. Kan geen verbinding maken met lokale (lopende) mongo met 'meteor mongo'