# lim-js **Repository Path**: ivanant/lim-js ## Basic Information - **Project Name**: lim-js - **Description**: No description available - **Primary Language**: NodeJS - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-04-27 - **Last Updated**: 2025-04-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # lim-js ## 介绍 快捷处理函数 nodejs、js。基本实现一行搞定。 ivanlin96@gmail.com ## 安装使用 ``` npm install @less-is-more/less-js ``` ## 开始 1. 生成数据库映射对象,可以使用 sequelize-automatic。具体请查看其官方 npm 说明。 2. src下建立index.js文件,可参考 ```js const { Router, Db, Redis } = require("@less-is-more/less-js"); const ApiController = require("./api/api-controller"); const process = require("process"); exports.init = (context, callback) => { Db.init( process.env.dbHost, process.env.dbDatabase, process.env.dbUser, process.env.dbPassword ); Redis.init(process.env.redisUrl, "default", process.env.redisPassword); callback(null, ""); }; exports.handler = (req, res, context) => { res.setHeader("content-type", "application/json"); const targets = { "/api": new ApiController(), }; Router.route(targets, req, res, context); }; ``` 3. 自动生成增删查改。在项目根的命令行执行,然后选择数据库表 ```shell less-js-gen ``` ## 功能块 具体每个函数有具体说明每个参数的作用,以下不再重复。 ### Route 简单路由。通常放在函数入口 index 中。 Controller 里面需要执行 send 或者直接 return 一个值(值会自动转换文本,来符合 send 的标准)。 ```js // ProductController为类实现 let targets = { "/product": ProductController, "/order": OrderController, }; Router.route(targets, req, res); ``` ### Cache 缓存,有数据就返回,没有就调用函数并保存结果。 使用 redis 作为缓存,需要初始化 没有使用 annotation,在 mocha 测试快速。 ```js const { Cache, Redis } = require(" @less-is-more/less-js"); // 初始化一次就可以,可以放公用 Redis.init("地址", "用户名", "密码"); let testFunction = (a, b) => { console.log(a + b); return a + b + ""; }; // 调用 const result = await Cache.get("test", 20, testFunction, testFunction, 1, 2); ``` ### Db 数据库暂时支持 mysql。 使用到 sequelize,对象和查询方法可以参考官方文档 ```js const { Db } = require(" @less-is-more/less-js"); // 初始化一次就可以,可以放公用 Db.init("地址", "数据库", "用户", "密码"); // 简单查询 let data = await Db.find(Menu, { ordering: "1" }); // 带分页 let data = await Db.find(Menu, { ordering: "2" }, [["id", "desc"]], 2, 3); // 指定返回列 let data = await Db.find(Menu, { ordering: "0" }, [["id", "desc"]], 1, 10, [ "id", ]); // 添加,Product是生成对象,可以参考sequelize-automate Db.add(Product, { code: "test", name: "产品", }); // 修改 Db.update(Menu, { name: "test name2", ordering: "2" }, { id: 7 }); // 删除。限制了一条记录 Db.delOne(Menu, { code: "abc" }); ``` ### Redis 简单封装。命令和官方一样。 ```js const { Redis } = require(" @less-is-more/less-js"); // 初始化一次就可以,可以放公用 Redis.init("地址", "用户名", "密码"); // exec命令,调用官方命令,参数顺序一样 let result = await Redis.exec("get", "test"); ``` ### Param 参数处理工具。检查参数,错误抛 Error,成功返回参数集合 基本沿用 validator 的方法,https://www.npmjs.com/package/validator check 方法新增 isNotEmpty, require。支持多个,空格隔开。默认 is 类的方法不含空 ```js let params = await Param.checkParams([ ["返回参数key", value, "isNotEmpty", "错误显示的内容"], ["返回参数key2", value2, "isNotEmpty", "错误显示的内容2"], ]); // 检查是否空 Param.isBlank(value); ``` ### Sms 暂时支持阿里云的短信服务 ```js // 初始化一次就可以,可以放公用 Sms.init("key", "secret", "token"); Sms.debug(true); Sms.send("手机号码", { info: "短信参数" }, "签名", "短信编号"); ```