First of all, you do not need the original object. You can access it in pre with this . The second time, post hook is executed only after all pre hooks have been completed, so your code does not make sense at all ( check mongoose docs ).
You can do the verification by checking isModified in your pre trick and generally remove the post hook.
OrderSchema.pre('save', function(next) { if(!this.isModified()){
Update
To check if a property has been changed, pass the property name as a parameter to the isModified function:
if (this.isModified("some-property")) { // do something }
source share