UNPKG

mm_os

Version:

MM_OS服务端架构,用于快速构建应用程序,支持网站建设、小程序后台、AI应用、物联网(IOT/AIOT)、游戏服务端等多种场景。

157 lines (146 loc) 3.3 kB
const Manager = require('mm_machine').Manager; const Drive = require('./drive'); /** * 参数类 * @augments {Manager} * @class */ class Param extends Manager { /** * 配置参数 * @type {object} */ static config = { /** * 名称 * @type {string} */ name: '', /** * 标题 * @type {string} */ title: '参数管理', /** * 描述 * @type {string} */ description: '这是参数管理器', /** * 检索文件名 * @type {string} */ filename: 'param.json', /** * 模板目录 * @type {string} */ tpl_dir: __dirname, /** * 基础目录 * @type {string} */ base_dir: '../common/param'.fullname(__dirname), /** * 自定义目录,加载项目自定义资源 * @type {string} */ dir: './app'.fullname(), /** * 搜索模式 dir按目录搜索 | file按文件名搜索 * @type {string} */ search_way: 'file', /** * 是否懒加载 * @type {boolean} */ lazy_load: true, /** * 模式 * 1.生产模式,改变文件不会重新加载 * 2.热更新模式,改变配置文件会重新加载配置,不重新加载脚本 * 3.热重载模式,改变配置文件都会加载配置和脚本 * 4.重载模式,执行完后重新加载脚本,避免变量污染 * 5.热更新+重载模式,改变配置文件重新加载配置和脚本,执行完后重新加载脚本 * @type {number} */ mode: 3 }; /** * 构造函数 * @param {object} config 配置参数 * @param {object} parent 父级模块 */ constructor(config, parent) { super({ ...Param.config, ...config }, parent); } } /** * 参数驱动类 * @type {Drive} */ Param.prototype.Drive = Drive; /** * 排序 */ Param.prototype.sort = function() { let infos = this.getInfos(); infos.sortBy('asc', 'name'); }; /** * 配置对象或配置路径 * @param {object} db 数据库管理器 (object) 只支持可用sql语句的数据库 * @param {string} name 名称 * @param {object} query url参数 * @param {object} body 正文参数 * @returns {object} 验证失败返回错误信息,成功返回null */ Param.prototype.run = async function(db, name, query, body) { var obj = this.getMod(name); if (obj) { // 检查参数状态,状态为0时跳过执行 if (obj.config && obj.config.state === 0) { return null; } try { return await obj.run(db, query, body); } catch (error) { this.log('error', 'Param验证异常:', error); // 参数验证异常时返回null return null; } } return null; }; exports.Param = Param; /** * Param参数池 */ if (!$.pool.param) { $.pool.param = {}; } /** * Param管理器,用于创建缓存 * @param {string} scope 作用域 * @param {string} title 标题 * @returns {object} 返回一个缓存类 */ function paramAdmin(scope, title) { var sc = scope || $.val.scope + ''; var obj = $.pool.param[sc]; if (!obj) { $.pool.param[sc] = new Param({ name: sc, title: title }); obj = $.pool.param[sc]; } return obj; } /** * @module 导出Param管理器 */ if ($.admin) { $.admin.param = paramAdmin; }