0
現在のプロジェクトでいくつかの監査を適用したいと思います。そのためにシナリオを作成しましたが、ポイントを作る方法がわかりませんとアトミックです。MongoDB:ベリファイドキュメントが更新されていません
シナリオ
すべての文書は、バージョンとして、サーバ 意志timestamp
を持っている必要があります。我々は意志の文書を保存するとき:
- 文書が変更されていないことを確認 -は最初
docUpdated
を保存するために、我々は希望の文書を最新の文書のtimestamps
docLatest
を比較します。timestamps
は等しい必要があります。- 保存しないと保存要求が拒否されます。
- OKの場合は、次のポイントに進みます。
- 更新
- は、以前のドキュメントでdiffを作成した文書 -最新のドキュメントは、私たちの最後の 文書でなければなりません。 diffを作成して保存します。
Thx vdj4y!私はそれを区別する必要があります。 diffログを監査ログに使用します。 私はmongoDbのより自然な解決策を踏襲しました。 http://mongoosejs.com/docs/guide.htmlを見て、 'option:versionKey'を検索してください。これは楽観的なロックの準備ができています。私の場合、 'timestamp'を単純な非負の数字である' __v'に置き換えます。しかし私は '__v'を私の文書のいずれにも見せてもらえません... – zatziky
それはとても興味深いです。あなたが現在のドキュメントが最新であるかどうかをチェックしたいと思うので、私はそれが無意味だと思うから、古い値を最新のタイムスタンプに置き換えてください(インクリメントしないで置き換えてください)。計画はバージョンを増やすことです。乾杯 – vdj4y