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);
});
lei-controller
0.0.1 • Public • PublishedPackage Sidebar
Install
npm i lei-controller
Weekly Downloads
1
Version
0.0.1
License
MIT