我有一个mongoose设置,涉及一个嵌入式架构,让我们说:一个带有嵌入式注释的Blogpost.评论可以由原始出版商以及编辑/管理员进行编辑.添加/编辑评论后,将保存整个博文.
我在嵌入式评论模式上设置了一些自定义mongoose的"预先"中间件,它自动设置该特定评论的持续时间.
事情是,在博客帖子上的每条评论都会调用'pre',因为我在blogpost上调用了save().(出于其他原因,我需要像这样做).因此,我需要一种方法来检查哪些注释已经更改(或者是新的),因为它们最后一次保存(作为Blogpost整体保存()的一部分)
问题:如何检查"预先"评论是否有变化?显然,调用this.isNew是不够的,因为评论也可以编辑(即:不是新的).
我有什么isDirty或类似的东西可以忽略吗?
在Mongoose中,您可以使用Document方法isModified(@STRING).
可以在此处找到该方法的最新文档.
因此,要使用doc.isModified检查特定属性,您可以执行以下操作:
doc.comments[4].message = "Hi, I've made an edit to my post";
// inside pre hook
if ( this.isModified('comments') ) {
// do something
}
Run Code Online (Sandbox Code Playgroud)
如果要检查特定注释,可以使用以下表示法执行此操作 this.isModified('comments.0.message')
由于参数需要一个字符串,如果你需要具体知道修改了哪个注释,你可以遍历每个注释并运行 this.isModified('comments['+i+']message')
| 归档时间: |
|
| 查看次数: |
5222 次 |
| 最近记录: |