Особенности использования Sails для начинающих (Часть 2)

от автора

Синопсис

В этой статье собраны полезные для новичков советы по использованию различных возможностей MVC фреймворка SailsJS. Эти советы могут быть полезны новичкам тем, что открывают некоторые «секреты» которые могут им быть незнакомы — из-за этого многие пишут множество костылей и велосипедов, это может заставить погаснуть их энтузиазм в изучении этого полезного инструмента только потому что их основные силы будут направлены на обычную рутину которую можно запросто обойти с помощью простых и удобных методов. Интересно?


Выгрузка файлов на сервер в SailsJS

В Sails с версии 0.10 по-умолчанию встроена новая удобная опция — выгрузки файлов на сервер с помощью простых и удобных средств, привычных каждому, кто хоть раз пользовался этим фреймворком. Мы все привыкли — что принять данные запроса GET или POST можно просто использовав метод запроса param()

var page = req.param('page'); // атрибут 'page' принимает значения переданного запроса 

Но у этого метода есть изъян — он принимает лишь строку. А нам необходимо работать с файлами, что же можно сделать? Для этого в Sails есть метод запроса file()

req.file('file'); // атрибут file - значение файлового запроса 

Далее в обработку вступает созданная командой Sails библиотека Skipper (Шкипер), которая имеет простое и легко запонимающееся API. Сейчас приведу код простого контроллера, а потом подробнее опишу как использовать API.

module.exports = {   index: function (req,res){   	res.view();   },   upload: function  (req, res) {     req.file('file').upload({     	dirname: 'uploads/',     },function (err, files) {       if (err)         return res.serverError(err);        return res.json({         message: files.length + ' Выгрузка файл(ов) завершена!',         files: files       });     });   } }; 

Индексный атрибут — простое отображение страницы. Дальше выгрузка — которая запрашивает файл(ы), отправляемые запросом. Метод upload() принимает 2 агрумента — объект опций, и коллбек функция с данными — ошибка, и файлы. В нашем случае после загрузки на сервер нам отвечают json с данным о количестве и размере файлов. Отправляются файлы как запросом из формы, так и как AJAX — но с указанием необходимой мета-информации. В простейшем виде представление формы выглядит так:

<form action="/file/upload" enctype="multipart/form-data" method="post"> <input type="file" name="avatar" multiple="multiple"><br> <input type="submit" value="Загрузить"> </form> 
Опции

В объекте опций который мы передали может содержать 2 значения:

dirname (Строка)

Путь к папке куда загружать файлы. (по-умолчанию это ".tmp/uploads)

saveAs (колбек)

Функция для определения логики формирования имен загружаемых файлов, в ином случае если не указано — когда появляется файл с именем идентичным старому: файл перезаписывается. Базовый аргумент — объект file. Функция должна возвращать имя файла. Пример:

function (file) { 	return Math.random() + file.name; } 
Дополнительно

Также кроме этого в качестве метода для гибкости можно использовать дополнительные возможности:

req.file('file') // Если Ошибка .on('error', function onError() { ... }) // Если Успешно выполнено .on('finish', function onSuccess() { ... }) // Параметры .pipe(receiving) 

Страница библиотеки Skipper на GitHub.

Sails.log — логирование в sails

Когда при разработке нужно обозначить какие-либо моменты в консоли — стандартная команда console.log() будет не так эффективна как sails.log — встроенная в sails система ведения логов в консоли. Это небольшие «сахарные» возможности которые позволяют выделять цветом ваши сообщения в консоли — и к какому виду сообщений они принадлежат. Это полезно когда выполняется множество логируемых действий — и непонятно какое из них к чему принадлежит: К ошибке или информационному сообщению, а может вообще просто как пустая информация. Для sails.log есть 6 методов определения. Вот они:

sails.log.error('Ошибка'); // Выводит сообщение отмеченное красным как error: sails.log.warn('Предупреждение'); // Выводит сообщение отмеченное желтым как warn: sails.log.debug('Отладочное сообщение'); // Выводит сообщение отмеченное синим как debug: sails.log.info('Информация'); // Выводит сообщение отмеченное зеленым как info:  // Низко приоритетные уровни журнала: sails.log.verbose('Подробное описание'); // Подробное описание чего либо (маловажная информация) sails.log.silly('Бесполезная информация '); // Абсолютно не нужное в логах 

В заключение

На этом завершим вторую часть нашего экскурса в возможности Sails, и их практическом использовании. В следующей статье будут рассмотрены такие вопросы как «Unit тестирование частей приложения Sails с помощью Mocha» и другие полезные моменты использования фреймворка SailsJS.

ссылка на оригинал статьи http://habrahabr.ru/post/228419/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *