sql >> Databasteknik >  >> NoSQL >> MongoDB

Mongoose Pre-Save Hook avfyras, men sparar inte ytterligare fält (inte använder model.update)

Du går miste om this sammanhang här,

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

där du säger:

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

hänvisar faktiskt till återuppringningsfunktionen för findOne-frågan, så du slutar med rätt console.log och fel data infogade.

du kan komma ihåg det här sammanhanget med pre save-kroken och senare uppdatera numret med det sammanhanget i återuppringningen. som nedan:

.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. Node.js SSH Tunneling till MongoDB med Mongoose

  2. Hur man slår samman data från två samlingar i MongoDB

  3. Redis, kommer ett ämne (pub/sub) alltid att levereras till minst en prenumerant?

  4. Hantering av övergående nätverksfel med StackExchange.Redis