Någonstans mellan den sena versionen 3.8.x och 4.0 posten init krok har ändrats, men inte dokumenterats. Före ändringen this refererade till det aktuella dokumentet, men nu this är händelsesändaren som utlöste hook call. Det nya sättet att komma åt det aktuella dokumentet är genom att lägga till en parameter till hook-funktionen, precis som pre save och remove krokar.
schema.post('init', function(doc) {
doc._original = doc.toObject();
});
Efter denna ändring verkar tyvärr alla icke-schemaegenskaper som läggs till i dokumentet gå förlorade mellan posten init och pre save krokar, så det finns inget sätt att fixa detta just nu.
Jag öppnade ett problem (#2952 ) på Github i fredags. Det finns för närvarande 387 öppna problem, så jag är inte säker på hur snabbt detta kommer att lösas. Jag lägger upp en uppdatering om jag hör något.