我在Mongoose中有一个Article
模型,有几个属性,其中一个是布尔值,approved
。
我还有两个日期属性,created_at
和updated_at
。我使用以下功能处理这两个:
ArticleSchema.pre('save', function (next) {
'use strict';
var now = new Date();
this.updated_at = now;
if (!this.created_at) {
this.created_at = now;
}
next();
});
使用此代码,即使我只批准该文章,updated_at
也会被更改 - 但是,我使用updated_at
属性来显示一个小小的#34;已编辑的"文字,如果updated_at !== created_at
。
如果有任何属性但是updated_at
被更改,我是否可以更改approved
?
谢谢!
答案 0 :(得分:3)
您可以使用Document#modifiedPaths()
method列出所有已修改的路径:
ArticleSchema.method('isUpdated', function () {
'use strict';
var modified = this.modifiedPaths();
switch (modified.length) {
case 0:
return false;
case 1:
return !~modified.indexOf('approved');
default:
return true;
}
});
ArticleSchema.pre('save', function (next) {
'use strict';
var now = new Date();
if (!this.created_at) {
this.created_at = this.updated_at = now;
} else if (this.isUpdated()) {
this.updated_at = now;
}
next();
});