Задать вопрос

Написать статью по необычной практике написания сервисов на Node.js?

Не уверен стоит ли писать статью по не традиционной практике разработки на Node.js. Хотел охватить написание Restfull сервиса с использованием Dependency Injection патерна, вся асинхронность через Promise (Q module), аннотаций для декларирование Http методов, валидаций и т.д. одним словом отказываемся от middleware и пишем аннотации к методам. На примере todoMVC с Angular.js, т.е. с использованием этой практики написать backend для Angular.js.
Напишите если интересно увидеть статью, спасибо.

Выглядит примерно в таком стиле
/**
 * @HttpMethod('/album')
 */
define('album', __filename, function ($errors, $mongodb, albumModel, imageModel) {
    var ObjectId = $mongodb.ObjectID;
    return {

        /**
         *
         * @Validation(fields='name')
         * @HttpMethod(method='POST')
         */
        new: function(req, res){
            var name = req.param('name', '');
            return albumModel.insert(req.user, name).then(function(album){
                return res.send(204, '');
            });
        },

        /**
         *
         * @Validation(fields='albumId,name', type='album')
         * @HttpMethod(url='rename', method='POST')
         */
        rename: function(req, res){
            var name = req.param('name', ''),
                albumId = req.param('albumId', '');

            return albumModel.update({_id: new ObjectId(albumId)}, {name: name}).then(function(){
                    return res.send(204, '');
                });
        },
/**
         *
         * @Validation(fields='albumId', type='album')
         * @HttpMethod(url='remove', method='POST')
         */
        remove: function(req, res){
            var albumId = req.param('albumId', '');

            return albumModel.findOne({_id: new ObjectId(albumId)}).then(function(album){
                if (album.isOther) throw new $errors.HttpError(401, res.locals.__('messages.accessDenied'));
            }).then(function(){
                    return imageModel.remove({albumId: new ObjectId(albumId)}).then(function(){
                        return albumModel.remove({_id: new ObjectId(albumId)});
                    }).then(function(){
                            return res.send(204, '')
                        });
                })

        },
   };
});

  • Вопрос задан
  • 2651 просмотр
Подписаться 3 Оценить Комментировать
Решения вопроса 1
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
чем это dependency injection и deferred objects в контексте js необычны?

А так пишите конечно, но постарайтесь раскрыть все по подробнее, зачем применять то и то и профит от этого. Описать inversion of control в js, особенностях там всяких... примеры... Статья туториал как писать это не так интересно, тут скорее статья разбор готового приложение с подробным описанием этих практик. Ну и что бы люди могли на реальном примере посмотреть.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Sander_Li
@Sander_Li
Backend developer
Было бы интересно
Ответ написан
zxmd
@zxmd
Вам не хватает приключений видать, раз такой код пишете...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы