2012-05-07 65 views
4

我有一個涉及嵌入式架構的貓鼬設置,可以這樣說:帶嵌入式註釋的Blogpost。評論可以由原始發佈者以及編輯/管理員編輯。添加/編輯評論後,整個博客帖子都會保存。確實貓鼬有一個isDirty檢查?

我有一些自定義mongoose的'pre'中間件設置嵌入式評論架構,它會自動設置該特定評論的lasteditdate。

事情是因爲我在blogpost上調用了save(),所以'blog'上的每條評論都會調用'pre'。 (由於其他原因,我需要這樣做)。因此,我需要一種方法來檢查自上次保存後哪些評論已經更改(或者是新的)(作爲Blogpost整體save()的一部分)

問題:如何檢查'pre'是否評論已經改變或沒有?很顯然,調用this.isNew是不夠的,因爲可以編輯評論(即:不是新的)。

有沒有我忽略的isDirty或類似的東西?

回答

3

您可以使用修改後的getter:

if (doc.modified) { 
    // :) 
} 
+0

我們如何使用它? – raju

16

對於3.x版本

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

我們如何使用這個? – raju

5

在貓鼬,你可以使用文檔方法isModified(@STRING)

該方法的最新文檔可以在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')