2016-03-26 10 views
0

Mungo V4.4.7Mungo Pre-Update Haken - update Dokument funktioniert nicht

Ich Parken Modell eines anderen Modells von einem Controller zu aktualisieren. Ich möchte vor diesem Update ein zweites Update machen, aber es scheint nicht im Mungo-Hook zu funktionieren.

diese Abfrage Gegeben ...

// non Parking controller 
Parking.update({_id: parked.parkingId}, { 
    $set: { 'availability.current': true } 
}); 

Ich möchte wie etwas tun ...

// Parking Model 
ParkingsSchema.pre('update', function() { 
var self = this; 

    if (self._update.$set['availability.current']) { 
    var id = self._conditions._id; 
    self.findOne() 
     .then(doc => { 
     self.update({}, {$set:{'availability.until': doc.ownerBackAt}}) 
     }) 
     .catch(logger.log); 
    } 

}); 

Die self.update scheint nichts zu tun Ich habe console.log (this) zum Voraktualisierungs-Hook und es wird nicht angezeigt.

was mache ich falsch?

vielleicht Es ist nicht möglich, das Dokument in den pre/post Update Hooks abzufragen?

+0

welche Mungo Version Sie verwenden .. Update Haken werden erst nach 4.x –

+0

@NaeemShaikh Mungo V4.4.7 unterstützt – goldylucks

Antwort

2

Sie haben den Rückruf von next() vergessen. Ich habe den 'then' Weg übersprungen und normales findOne benutzt und update so, das sollte deine Arbeit machen.

Beachten Sie, dass Sie, wenn Sie das Dokument ändern oder einen Fehler oder etwas in Abhängigkeit von den Ergebnissen von findOne() auslösen, den nächsten() Callback innerhalb des findOne Callbacks verschieben müssen.

ParkingsSchema.pre('update', function(next) { 
    var self = this; 
    if (self._update.$set.availability.current) { 
    var id = self._conditions._id; 
    self.findOne({key:id},function(err,doc){ 
     if(err) 
      console.log(err); 
     else 
      self.update({},{$set:{'availability.until': doc.ownerBackAt}}); 
    }); 
    } 
    next(); 
});