mongoose是否有脏检查?

我有一个涉及embedded式模式的mongoose设置,可以这样说:一个带有embedded式注释的Blogpost。 评论可以由原始出版商以及编辑/pipe理员进行编辑。 添加/编辑评论后,整个blogpost被保存。

我有一些自定义mongoose的'预'中间件设置embedded的评论模式,它会自动设置该特定评论的lasteditdate。

因为我在blogpost上调用了save(),所以关于blogpost上的每条评论都会调用“pre”。 (由于其他原因,我需要这样做)。 因此,我需要一种方法来检查自上次保存(作为Blogpost整体save()的一部分)以来哪些注释已经更改(或者是新的)

问题:如何检查“预”是否有评论已经改变? 显然,把this.isNew是不够的,因为可以编辑评论(即:不是新的)。

有没有我可以忽略的isDirty或类似isDirty

你可以使用修改的getter:

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

对于版本3.x

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

在Mongoose中,可以使用Document方法isModified(@STRING)

该方法的最新文档可以在这里find。

所以要用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')

由于参数需要一个string,如果你需要知道具体哪个评论被修改,你可以遍历每个评论,并运行this.isModified('comments['+i+']message')