![](http://habrastorage.org/getpro/habr/post_images/7eb/f28/7cd/7ebf287cd6002f4fa657394a0c2eab7a.png)
Синопсис
В этой статье собраны полезные для новичков советы по использованию различных возможностей 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/
Добавить комментарий