diff --git a/docs/middleware/op-submission.md b/docs/middleware/op-submission.md index 737fd914e..fc412b6dd 100644 --- a/docs/middleware/op-submission.md +++ b/docs/middleware/op-submission.md @@ -157,3 +157,24 @@ backend.use('apply', (request, next) => { {: .warn :} The `request.$fixup()` method may throw an error, which should be handled appropriately, usually by passing directly to the `next()` callback. + +## Comparing old snapshot version with new version + +Frequently, it becomes necessary to verify the changes made. This can be accomplished by leveraging two hooks, `apply` and `commit`, and creating a snapshot clone within the `apply` hook. + +```js +backend.use('apply', (request, next) => { + // Here use your favorite deep clone implementation + // sharedb team recommends rfdc + // https://github.com/davidmarkclements/rfdc#readme + request.snapshotBeforeApply = clone(request.snapshot); + next(error); +}); + +backend.use('commit', (request, next) => { + // Snapshot without ops and $fixupOps applied is now available as request.snapshotBeforeApply + // Snapshot with ops and $fixupOps applied is still available as request.snapshot + console.log(request.snapshotBeforeApply) + next(error); +}); +``` \ No newline at end of file