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

Модель фото

Класс Photo отвечает за работу с фотографиями в публичной части блога. Загрузка и обработка реализуются в модуле администрирования.

models/Photo.js

'use strict';
const Base = require('areto/db/ActiveRecord');
module.exports = class Photo extends Base {

  static getConstants () {
    return {
      TABLE: 'photo'
    };
  }

  getTitle () {
    return this.get('title');
  }

  // place methods here
};
module.exports.init(module);
const path = require('path');

Метод getThumb отдает адрес, по которому находится превью указанного размера size. Адрес можно использовать для вывода фото в шаблоне: <img src="<%- photo.getThumb(128) %>" alt="<%- photo.getTitle() %>">. Остальные методы - это ссылки на getThumb с определенным размером превью.

models/Photo.js

...
  getThumb (size) {
    return `/photos/${size}/${this.get('filename')}`;
  }

  getLarge () {
    return this.getThumb(720);
  }

  getMedium () {
    return this.getThumb(360);
  }

  getSmall () {
    return this.getThumb(128);
  }
...