lei-controller

0.0.1 • Public • Published

node-lei-controller

var leiController = require('lei-controller');

// 创建控制器
var controller = leiController.create({

  // 控制器名称,可选,默认随机生成(进程重启后会导致旧缓存失效)
  name: 'mycontroller',

  // 根据参数生成key,可选,默认返回md5(JSON.stringify(params)).substr(0,10);
  paramsKey: function (params) {
    // params是处理请求时传递过来的参数
    return key;
  },

  // 当用户未登录,或用户已登陆但没提供private处理函数时,执行此函数,必须
  public: function (params, req, res, next) {
    // params是执行控制器时传递过来的参数,为了使不同的路由能共用一个controller而又不必
    //   判断不同的参数来源(比如是req.query还是req.body),统一由路由处理程序指定参数
    // req, res, next 是当前请求实例
  },

  // 当用户已登录时,执行此函数,可选
  private: function (params, req, res, next) {
    // 参数说明同public
  },

  // connect中间件数组,一般用于预处理数据和验证用户登录权限,可选
  use: [middleware1, middleware2],

  // 返回用户的缓存key,当指定private时,必须
  verify: function (req, callback) {
    // req是当前请求的request实例
    // callback是回调函数:
    //   callback(false); 用户未登录
    //   callback(true, key); 用户已登录,key是该用户的标识符字符串,用来区分缓存
    //     若只缓存按用户组来区分,key可以为该组名
  },

  // 缓存相关
  cache: {

    // 是否开启缓存,存储在redis服务器,默认false,可选
    // 当开启了缓存,程序会优先使用缓存的结果直接返回,而不是执行public或private处理
    // (问题:需要有一个方法来获取res.render()的内容,且仅当返回200时才会缓存结果)
    enable: true,

    // 缓存的存活时间,单位为秒,当设置enableCache为true时,必须
    maxAge: 3600,

    // 用于设置缓存的函数
    set: function (key, data, ttl, callback) {
      // key是缓存名称
      // data是字符串数据
      // ttl是存活时间
      // callback是回调函数
    },

    // 用于取缓存的函数
    get: function (key, callback) {
      // key是缓存名称
      // callback是回调函数
      //   callback(false) 缓存不存在
      //   callback(true, data) 返回缓存
    }

  }

});

// 也可这样创建
var controller = leiController.create();
controller.public = function (params, req, res, next) {};
controller.private = function (params, req, res, next) {};
controller.cache.enable = true;
controller.cache.maxAge = 3600;
controller.use(middleware1);
controller.use(middleware2);
controller.verify = function (req, callback) {};


// 在路由处理中使用
app.get('/user/:name', function (req, res, next) {
  // 获取参数
  var params = {username: req.params.name};
  // 调用控制器处理
  controller.process(params, req, res, next);
});

Readme

Keywords

Package Sidebar

Install

npm i lei-controller

Weekly Downloads

2

Version

0.0.1

License

MIT

Last publish

Collaborators

  • leizongmin