vig 框架实战代码示例

Author Avatar calidion 发表于 • 2016年11月25日 10:59 • 共 • 711 • 次浏览

使用vig框架,竟让控制器代码如此的简洁,灵活。

即可组合,又可分离。

vig项目代码:https://github.com/calidion/vig

代码地址:https://github.com/calidion/forim/blob/master/lib/v2/handlers/user.js

var callbacks = require('../util/callbacks');
var register = require('./user/register');
var login = require('./user/login');
var logout = require('./user/logout');
var list = require('./user/list');
var profile = require('./user/profile');
var activate = require('./user/activate');

module.exports = [list, profile, {
  prefix: '/v2/user/name',
  urls: ['/:username'],
  routers: {
    all: function (req, res) {
      var username = req.params.username;
      req.models.User.findOne({
        username: username
      }).then(function (user) {
        if (!user) {
          return res.errorize(req.errors.UserNotFound, {
            username: username
          });
        }
      }).fail(callbacks.failed(res));
    }
  }
}, register, login, logout, activate];
最后编辑于 • 2016年11月25日 11:13 •  
1 回复
avatar
0
calidion 楼主
发放红包 2016年11月25日 11:02   # 1 楼

代码地址: https://github.com/calidion/forim/blob/master/lib/v2/handlers/user/activate.js

function onFailure(err, req, res) {
  res.render('notify/notify', {
    error: err
  });
}

module.exports = {
  urls: ['/active_account', '/v2/user/activate'],
  routers: {
    get: function (req, res) {
      var extracted = req.extracted;
      var User = req.models.User;
      User.findOne({
        username: extracted.username
      }).then(function (found) {
        if (!found) {
          return onFailure('用户未找到!', req, res);
        }
        if (found.accessToken !== extracted.token) {
          return onFailure('Token不正确!', req, res);
        }
        if (found.active) {
          return onFailure('帐号已经激活!', req, res);
        }
        found.active = true;
        found.save(function (error) {
          if (error) {
            return onFailure('数据库错误!', req, res);
          }
          onFailure('帐号激活成功,你可以现在登录论坛了!', req, res);
        });
      }).fail(function () {
        return onFailure('数据库错误!', req, res);
      });
    }
  },
  validations: {
    get: {
      query: {
        username: {
          type: 'string',
          required: true
        },
        token: {
          type: 'string',
          required: true
        }
      }
    }
  },
  failures: {
    validation: function (data, req, res) {
      onFailure('输入错误!', req, res, req.body);
    }
  }
};

你尚未登录,无法进行回复。