• 服务器端 API
    • Enhancer 全局对象
      • isProduction() 是否在生产环境。生产环境是指项目发布后部署运行的环境。
      • setData(name, value[, expire]) 设置全局数据。该数据会保存到 Redis,不参与@变量@解析体系。
      • getData(name, callback) 获取全局数据。
      • getVariable(name) 获取服务器端全局变量。(与用户无关的变量)
      • setVariable(name, variable) 设置服务器端全局变量,只能在工作台【全局配置】-【系统启动函数】中使用,设置后能在全局使用该@变量@。前端用:@0-变量@
      • setSessionVariable(name, value) 设置当前用户会话变量。
      • getSessionVariable(name) 获取当前用户会话变量。
      • getDatabaseService() 获取数据库服务。
      • getDatabaseConfig() 获取数据库配置。
      • getContextRequest() 获取当前 HTTP 请求对象。
      • getContextResponse() 获取当前 HTTP 请求回应对象。
      • getCurrentUser() 获取当前用户。
      • getUserFileDir() 获取用户文件所在目录。
      • resolveUserFilePath(url|path) 解析用户文件资源 url,获取该文件在服务器上存储的绝对路径
      • getRoleList 获取系统角色列表。【注】非生产环境返回的是模拟数据,供测试用。
      • getRolePageList(role_id) 获取角色可访问的页面。【注】非生产环境返回的是模拟数据,供测试用。
      • getMenuNodeList() 获取系统菜单列表。【注】非生产环境返回的是模拟数据,供测试用。
      • setRole(id, name, des, homePage, callback) 设置角色,如果角色不存在,则会添加此新角色。【注】非生产环境此操作为模拟操作。
      • removeRole(id, callback) 删除角色。【注】非生产环境此操作为模拟操作。
      • setRolePage(id, page_id, callback) 设置角色可使用页面。【注】非生产环境此操作为模拟操作。
      • removeRolePage(id, page, callback) 移除角色可使用页面。【注】非生产环境此操作为模拟操作。
  • DatabaseService 数据库服务对象。
    • execute([connectionName, ]sql, params, callback) 执行 SQL,无需关心数据库连接,内部自动获取,返回。
    • beginTransaction([connectionName, ]callback) 开始事务。
      • 【例】
  • User 用户对象,可在全局配置的登录校验前、中、后函数函数参数中获得此对象,也可以通过 Enhancer.getCurrentUser() 方法获得。
    • setId(userId) 设置用户ID,设置后变量 @USER_ID@ 和 @1-USER_ID@ 可分别用于服务端和前端。
    • getId() 获得用户ID,登录前其值即当前登录用户输入的id内容。
    • setName(name) 设置用户名,设置后变量 @USER_NAME@ 和 @1-USER_NAME@ 可分别用于服务端和前端。
    • getName() 获得用户名。
    • getPassword() 获得用户登录密码。
    • setRoles(roleIDs) 设置用户角色。
    • getRoles() 获得角色。
    • getRolesDisplayName() 获得角色对应的显示名。
    • setVariable(varname, value) 设置属于用户的变量。
    • getVariable(varname) 获得用户变量。
    • isLoggedIn() 是否已登录。

    服务器端 API

    服务器端的 API 可以在服务器端的执行环境中使用:

    • 全局配置的各种回调函数如:【系统启动函数】,【用户登录前,中,后回调函数】。
    • 事件响应配置中的后台执行函数如:【sql执行前后台脚本】,【JavaScript 过程】。
    • 自定义后台接口中。

    Enhancer 全局对象

    isProduction() 是否在生产环境。生产环境是指项目发布后部署运行的环境。

    • @return {Boolean} 是否在生产环境。

    setData(name, value[, expire]) 设置全局数据。该数据会保存到 Redis,不参与@变量@解析体系。

    • @param name {String} [必须]
    • @param value {String} [必须]
    • @param expire {Number} [可选] 过期时间,单位秒

    getData(name, callback) 获取全局数据。

    • @param name {String} 变量名
    • @param callback {Function} 获取数据回调函数,回调参数第一个为错误对象,第二个为拿到的值。
      【例】
    1. Enhancer.set('mydata', 'This is a test data');
    2. Enhancer.set('mydata2', 'This is a test data2', 3);
    3. Enhancer.get('mydata', function(err, value) {
    4. if (err) {
    5. // 错误处理
    6. return;
    7. }
    8. console.log(value); //=> 'This is a test data';
    9. })

    getVariable(name) 获取服务器端全局变量。(与用户无关的变量)

    • @param name {String} 变量名
    • @return {Object} 变量值

    setVariable(name, variable) 设置服务器端全局变量,只能在工作台【全局配置】-【系统启动函数】中使用,设置后能在全局使用该@变量@。前端用:@0-变量@

    • @param name {String}
    • @param variable {Object}

    setSessionVariable(name, value) 设置当前用户会话变量。

    • @param name {String}
    • @param variable {Object}

    getSessionVariable(name) 获取当前用户会话变量。

    • @param name {String} 变量名
    • @return {Object} 变量值

    getDatabaseService() 获取数据库服务。

    • @return DatabaseService

    getDatabaseConfig() 获取数据库配置。

    • @return databaseConfiguration

    getContextRequest() 获取当前 HTTP 请求对象。

    • @return {HttpRequest} http 请求对象,该对象完整地保留了本次 http 请求的相关信息,是对 nodejs 原生 Http.IncomingMessage 对象的扩展。除了拥有 http 请求基本的参数属性之外还有以下常用属性和方法:
      • request.query {Object} 本次 http 请求 url 中的参数键值对。比如 request.query['name']可以取到url携带的name参数值。
      • request.body {Object} 本次 http 请求消息体键值对内容。
      • request.cookies {Object} 本次 http 请求携带的 cookie 键值对。
      • request.headers {Object} 本次 http 请求的 协议头对象。
        详细文档请参考 request api

    getContextResponse() 获取当前 HTTP 请求回应对象。

    • @return {HttpResponse} 对象是对 nodejs 原生 Http.ServerResponse 对象的扩展。除了拥有 http 响应所需的基本方法外还有以下常用方法:
      • response.status(code) 设置响应代码,默认 200。
      • response.send(text|json) 发送给客户端内容并结束响应。
      • response.cookie(name, value) 给客户端设置 cookie。
        详细文档请参考 response api

    getCurrentUser() 获取当前用户。

    • @return {User} 用户对象,详情见用户对象 API。

    getUserFileDir() 获取用户文件所在目录。

    • @return {String} 用户通过本应用存储在服务器上的文件目录绝对路径。

    resolveUserFilePath(url|path) 解析用户文件资源 url,获取该文件在服务器上存储的绝对路径

    • @param url {String} 用户上传文件后,获得的文件 url,通常是一个 http 地址。如:http://127.0.0.1:5301/file/20180422/JnPw3Av6YrFCQ9KdXo36-99U.png
    • @return {String} 该 url 对应的文件,在服务器上存放的绝度路径地址。

    getRoleList 获取系统角色列表。【注】非生产环境返回的是模拟数据,供测试用。

    • @return {Array} 角色列表,格式如:[{id: "admin", display_name: "管理员", description: "…"}, …]

    getRolePageList(role_id) 获取角色可访问的页面。【注】非生产环境返回的是模拟数据,供测试用。

    • @param role_id {String} 角色 ID。
    • @return {Array} 页面列表,格式如:[101, 120, 103]。

    getMenuNodeList() 获取系统菜单列表。【注】非生产环境返回的是模拟数据,供测试用。

    • @param {Array} 菜单列表,格式如:
    1. [
    2. {
    3. "node_id": 101, // 节点编号
    4. "node_name": "我的预定", // 节点名
    5. "parent_node_id": 0, // 父节点编号
    6. "is_leaf": "Y", // 是否是叶子节点
    7. "ord": 4, // 同层内序号
    8. "page_id": 101, // 页面编号
    9. "icon": "fas fa-calendar-check", // 节点图标
    10. "hidden": "N", // 是否隐藏节点
    11. "is_public": "N" // 是否是公共页面
    12. },
    13. ...
    14. ]

    setRole(id, name, des, homePage, callback) 设置角色,如果角色不存在,则会添加此新角色。【注】非生产环境此操作为模拟操作。

    • @param id {String} [必须]角色 ID。
    • @param name {String} [必须]角色名。
    • @param des {String} [可空] 描述。
    • @param homePage {Number} [可空] 该角色登入系统后默认的首页。
    • @param callback {Function} 设置完毕回调函数,参数如下
      • err 表示系统级错误,没有错误则此参数值为 null
      • result 操作结果,如:{success: true, message: 'OK'}
        【例】
    1. Enhancer.setRole('super', '超级管理员', 权利最大的用户', function(err, result) {
    2. if (err) {
    3. console.error(err);
    4. ... // 一些错误处理
    5. return
    6. }
    7. ...
    8. // 继续做一些事情。
    9. });

    removeRole(id, callback) 删除角色。【注】非生产环境此操作为模拟操作。

    • @param id {String} 角色 ID。
    • @param callback {Function} 回调函数,表述同 setRole 方法。

    setRolePage(id, page_id, callback) 设置角色可使用页面。【注】非生产环境此操作为模拟操作。

    • @param id {String} 角色 ID。
    • @param page_id {String} 页面 ID。
    • @param callback {Function} 回调函数,表述同 setRole 方法。

    removeRolePage(id, page, callback) 移除角色可使用页面。【注】非生产环境此操作为模拟操作。

    • @param id {String} 角色 ID。
    • @param page_id {String} 页面 ID。
    • @param callback {Function} 回调函数,表述同 setRole 方法。

    DatabaseService 数据库服务对象。

    该对象通过调用 Enhancer.getDatabaseService() 获取。

    execute([connectionName, ]sql, params, callback) 执行 SQL,无需关心数据库连接,内部自动获取,返回。

    • @param connectionName {String} 数据连接名,如果缺省参数或者为空,则将使用默认数据连接执行 SQL。
    • @param sql {String} SQL 语句(SELECT, UPDATE, DELETE, INSERT)
    • @param params {Array} sql 执行参数,按照 sql 语句中占位符的顺序排列。
    • @param callback {Function} 回调函数
      • err {Object} 错误对象,不为空时需要做一些错误处理。
      • result {Object} 执行结果
        • rows — 查询的结果行,执行 SELECT 时有效。
        • affectedRows — 影响的行数目,执行 UPDATE, DELETE, INSERT 等语句时有效。
        • metaData — 数据列元数据,执行 SELECT 时有效。
        • … 其他增删改执行结果,不同的数据库返回的字段有所不同,可以执行console.log(result)在控制台查看。

    beginTransaction([connectionName, ]callback) 开始事务。

    • @param connectionName {String} 数据连接名,如果缺省参数或者为空,则将使用默认数据连接开始事务。
    • @param callback {Function} 回调函数
      • err {Object} 错误对象,不为空时需要做一些错误处理。
      • conn {Object} 数据库连接对象
    【例】
    1. var DatabaseService = Enhancer.getDatabaseService();
    2. DatabaseService.beginTransaction(function(err, conn) {
    3. var sql1 = 'INSERT INTO TABLE 1...';
    4. var sql2 = 'UPDATE TABLE 2...';
    5. conn.execute(sql1, [], function(err1, result1) {
    6. if (err1) {
    7. conn.rollback(function() {
    8. conn.release(); // 用完要释放连接。
    9. });
    10. return /* 做一些错误处理,如果环境中有 done 方法,则直接 done(err) */
    11. }
    12. conn.execute(sql2, [], function(err2, result2) {
    13. if (err2) {
    14. conn.rollback(function() {
    15. conn.release(); // 用完要释放连接。
    16. });
    17. return /* 做一些错误处理,如果环境中有 done 方法,则直接 done(err) */
    18. }
    19. // ...
    20. conn.commit(function(err) {
    21. if (err) {
    22. return conn.rollback(function() {
    23. conn.release(); // 用完要释放连接。
    24. });
    25. }
    26. conn.release(); // 用完要释放连接。
    27. ...
    28. })
    29. });
    30. });
    31. })
    32. // 如果回调函数嵌套太深,建议用 async 模块做处理:https://github.com/caolan/async

    User 用户对象,可在全局配置的登录校验前、中、后函数函数参数中获得此对象,也可以通过 Enhancer.getCurrentUser() 方法获得。

    setId(userId) 设置用户ID,设置后变量 @USER_ID@ 和 @1-USER_ID@ 可分别用于服务端和前端。

    getId() 获得用户ID,登录前其值即当前登录用户输入的id内容。

    setName(name) 设置用户名,设置后变量 @USER_NAME@ 和 @1-USER_NAME@ 可分别用于服务端和前端。

    getName() 获得用户名。

    getPassword() 获得用户登录密码。

    setRoles(roleIDs) 设置用户角色。

    • @param roleIDs {String} 角色 ID 集合,多个角色逗号分隔。角色 ID 只能是定义在工作台角色管理中的值。设置后会拥有对应的页面访问权限。

    getRoles() 获得角色。

    getRolesDisplayName() 获得角色对应的显示名。

    setVariable(varname, value) 设置属于用户的变量。

    • @param varname {String} 变量名,设置后 @varname@ 和 @1-varname@ 可分别在服务端和前端使用。
    • @param value {Object | String | Boolean}

    getVariable(varname) 获得用户变量。

    isLoggedIn() 是否已登录。

    • @return {Boolean}