|
|
@@ -45,6 +45,27 @@ class PageGroupRelation {
|
|
|
return this._crowi;
|
|
|
}
|
|
|
|
|
|
+ static init() {
|
|
|
+ this.removeAllInvalidRelations();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * remove all invalid relations that has reference to unlinked document
|
|
|
+ */
|
|
|
+ static removeAllInvalidRelations() {
|
|
|
+ return this.findAllRelation()
|
|
|
+ .then(relations => {
|
|
|
+ // filter invalid documents
|
|
|
+ return relations.filter(relation => {
|
|
|
+ return relation.targetPage == null || relation.relatedGroup == null;
|
|
|
+ });
|
|
|
+ })
|
|
|
+ .then(invalidRelations => {
|
|
|
+ const ids = invalidRelations.map(relation => relation._id);
|
|
|
+ return this.deleteMany({ _id: { $in: ids }});
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* find all page and group relation
|
|
|
*
|
|
|
@@ -57,6 +78,7 @@ class PageGroupRelation {
|
|
|
return this
|
|
|
.find()
|
|
|
.populate('targetPage')
|
|
|
+ .populate('relatedGroup')
|
|
|
.exec();
|
|
|
}
|
|
|
|
|
|
@@ -229,10 +251,13 @@ class PageGroupRelation {
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
+
|
|
|
}
|
|
|
|
|
|
module.exports = function(crowi) {
|
|
|
PageGroupRelation.crowi = crowi;
|
|
|
schema.loadClass(PageGroupRelation);
|
|
|
- return mongoose.model('PageGroupRelation', schema);
|
|
|
+ const model = mongoose.model('PageGroupRelation', schema);
|
|
|
+ model.init();
|
|
|
+ return model;
|
|
|
};
|