Controller.js 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. "use strict";
  2. var Response = require('./lib/Response.js');
  3. var Param = require('./lib/Param.js');
  4. class Controller extends Response {
  5. constructor(req, res) {
  6. super(req, res);
  7. /**
  8. * 模板数据
  9. * @type {{}}
  10. * @private
  11. */
  12. this._tpl_data = {};
  13. this._startTime = new Date().getTime();
  14. this._req = req;
  15. this._res = res;
  16. this._objParam = new Param(this);
  17. }
  18. /**
  19. * 检查参数
  20. * @param rules 检查规则
  21. * {
  22. * 'appId' : 'int', //int类型
  23. * 'owners' : 'array', //array类型
  24. * 'instanceIds' : 'intArr', //array类型,元素为int类型
  25. * 'instanceTypes' : 'strArr', //array类型,元素为string类型
  26. * 'deviceId' : 'int/array', //int类型或者array类型,最后转化为元素为idArr类型
  27. * 'deviceClass' : 'string/array', //string类型或者array类型,最后转化为strArr类型
  28. * 'blocks' : {type : 'int', range : '(5, 10)'} //int类型, > 5 , < 10
  29. * 'blocks2' : {type : 'int', range : '[5, 10]'} //int类型, >= 5 , <= 10
  30. * 'percent' : {type : 'float', range : '[5.1, 10.9]'} //float类型,>= 5.1 , <= 10.9
  31. * 'appName' : {type : 'string'} //string类型
  32. * 'appName2' : {type : 'string', reg : '[^0-9A-Za-z]', 'len' : '[1, 10]', 'nullable' : true} //string类型,支持正则
  33. * }
  34. * @param args 参数合集
  35. * @param exitError 遇到错误是否直接exit
  36. * @static
  37. * @return boolean 是否检查通过
  38. */
  39. checkParam(rules, args, exitError) {
  40. this._objParam.checkParam(rules, args, exitError);
  41. }
  42. checkParam2(rules, args, exitError) {
  43. this._objParam.checkParam2(rules, args, exitError);
  44. }
  45. assign(key, value) {
  46. if (typeof key == 'object') {
  47. for (var k in key) {
  48. this._tpl_data[k] = key[k];
  49. }
  50. } else {
  51. this._tpl_data[key] = value;
  52. }
  53. };
  54. display(tpl) {
  55. tpl = tpl || CONTROLLER_NAME + '/' + ACTION_NAME;
  56. this._res.render(tpl, this._tpl_data);
  57. }
  58. }
  59. module.exports = Controller;