2012-05-07 6 views
4

私は埋め込まれたスキーマを含むマングース設定を持っていますが、言うことができます:コメントが埋め込まれたブログポスト。コメントは編集者/管理者だけでなく元の発行者によっても編集できます。コメントを追加/編集した後、ブログポスト全体が保存されます。マングースにisDirtyチェックがありますか?

私は、特定のコメントのlasteditdateを自動的に設定する埋め込みコメントスキーマにカスタムのmongooseの「プレ」ミドルウェアを設定しました。

blogpostでsave()を呼び出すので、Blogpostのすべてのコメントで「前」が呼び出されるということです。 (他の理由から私はこれをそうする必要があります)。したがって、最後に保存されたコメント(Blogpost全体保存()の一部として)が変更された(または新しい)かどうかを確認する方法が必要です

クエスト:変更されたかどうか明らかにthis.isNewを呼び出すだけでは、コメントを編集することができない(すなわち、新しいものではない)ので、十分ではない。

私が見落としているisDirtyなどはありますか? [ドキュメントメソッドisModified(@STRING)を使用することができますマングースではバージョン3.x

if(doc.isModified()){ 
    // do stuff 
} 

答えて

3

あなたが変更されたゲッターを使用することができます。

このメソッドの最新のドキュメントはhereです。

だから、あなたがこれを行うことができますdoc.isModifiedと、特定のプロパティをチェックするために:あなたは、特定のコメントをチェックしたい場合は

doc.comments[4].message = "Hi, I've made an edit to my post"; 
// inside pre hook 
if (this.isModified('comments')) { 
    // do something 
} 

を、あなたは、引数ので、以下の表記this.isModified('comments.0.message')

であることを行うことができますどのコメントが変更されたかを具体的に知る必要がある場合は文字列を取り、それぞれのコメントをループして実行することができますthis.isModified('comments['+i+']message')

+0

これはどのように使用しますか? – raju

16

+1

これはどのように使用しますか? – raju

5

について

if (doc.modified) { 
    // :) 
} 
関連する問題