Строим блог на основе Node.js MVC фреймворка Areto

Модель комментария

Класс Comment наследуется от класса из публичной части блога.

Модель комментария

В модуле администрирования требуется редактировать статус комментария. Для этого к унаследованным правилам добавляется валидация статуса по указанному диапазону значений.

modules/admin/models/Comment.js

'use strict';
const Base = require('../../../models/Comment');
module.exports = class Comment extends Base { 
  static getConstants () {
    return {
      RULES: this.RULES.concat([
        ['status', 'range', {range: ['pending','approved','rejected']}]
      ])
    };
  }
  // place methods here
};
module.exports.init(module);
const Article = require('./Article');

Метод findBySearch ищет комментарии, у которых текст, имя автора или email содержат указанный текст.

modules/admin/models/Comment.js

...
static findBySearch (text) {
  let query = this.find();
  if (text) {
    query.where(['OR', ['LIKE', 'content', `%${text}%`], {'name': text}, {'email': text}]);
  }
  return query;
}
...

Отношение relArticle определяет статью, к которой относится комментарий.

modules/admin/models/Comment.js

...
relArticle () {
  return this.hasOne(Article, [Article.PK, 'articleId']);
}
...