# YoudoServer **Repository Path**: youdoll/YoudoServer ## Basic Information - **Project Name**: YoudoServer - **Description**: Node Server 基于bookshelf.js knex.js - **Primary Language**: NodeJS - **License**: ISC - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2019-09-10 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # NodeServer > Node Server 基于bookshelf.js knex.js ##Build Setup ``` bash # install dependencies npm install # serve with hot reload npm run start # build for production with minification npm run build ``` ##Project Structure ``` bash |--dist --编译后存放文件夹 |--src --项目文件目录 |--config --系统配置文件目录 |--bookshelf.js --bookshelf.js 配置文件 |--dbHelper.js --knex连接配置文件 |--globalConfig.js --系统配置参数 包括:启动端口、数据库配置、文件夹名称列表,用于组装对应的控制类和model、数据库分组创建对应的目录文件、不再创建任何controller及model等等 |--controllers --接口文件目录 |--base.js --公共接口文件基础模型文件/用于根据数据库来创建对应的controller |--index.js --接口映射文件 |--databse --sql文件存放目录 |--models --model文件目录 |--base.js --模板展示文件 |--index.js --model映射文件 |--needs --用于创建初始化系统接口文件目录 |--index.js --实现功能函数,包含:makeModel、makeController |--routes --接口路由操作文件目录 |--index --路由映射文件[注:通常这个文件无需再次修改,public/helloworld 用于检测接口是否配置正常] |--static --服务存储静态文件目录 |--units --系统功能函数文件目录 |--extend.js --存储常用的方法 |--token.js --token生成/验证文件 |--.babelrc --.babelrc |--package.json --package.json ``` ##Additional Instructions ``` bash ###第一、初始化说明 初始化加载需要在/src/config/globalConfig.js配置好所需要的参数,这边特别说明三个参数"dirNameList"、"databaseGrouping"、"noLongerCreate" a)、dirNameList:如果您创建的controller和model需要分别存在不同的文件夹,那这边数值存放的是对应的目录名称, 例如:创建公共接口文件目录=>dirNameList=['common']。切记该参数存储的是字符串数组 b)、databaseGrouping:将哪些文件存放在哪个文件夹, 例如:将base对应的文件存在在common文件夹=>databaseGrouping=[{common:['base']}]。切记该参数存储的是对象数组,对象里面存储的数值位对应数据库表名称 c)、noLongerCreate:因为你每次调用系统初始化接口时,系统将重新创建文件并将覆盖现有的文件为初始化状态,如果您不想自己写的接口被重置,您可以将不想被重置的数据表存储,格式为字符串数值,存储的为对应数据库表名 ###第二、对应接口说明 系统提供基础的接口,存在/src/controllers/base.js文件中,系统对应的接口有:getModuleList、getListInfoForPage、getModule、insert、update、remove #具体对应接口时什么功能以及时什么请求类型自行在此文件查看 a)、getModuleList:需要传递的参数有"CheckId"、"token"、"WhereList" CheckId:用于检测token是否正确,与token一一对应 token:验签 存在headers,客户端传值参数值为大写Token,headers的取值需要为小写 WhereList:查询限制条件,该值为对象数值,对象值为: { LimitType: 'where',//数据查询类型 where 或 orWhere 对应的sql为:and 或 or Symbol: '<',//数学运算符 大于=>">" 小于=>"<" 等于=>"=" 不等于=>"<>" KeyType: 'where',//限制类型 可传值的类型有:firstLike、lastLike、fullLike、whereBetween、whereNotBetween、where、whereIn、whereNotIn KeyName: 'YStatus',//对应数据库表字段 KeyValue: '2'//需要查询数值 当KeyType值为:whereBetween、whereNotBetween、whereIn、whereNotIn时,该值需要为字符串数组 } ##附加说明 firstLike 对应的值类型为:select * from 'table' where 'columnName' like '%val' lastLike 对应的值类型为:select * from 'table' where 'columnName' like 'val%' fullLike 对应的值类型为:select * from 'table' where 'columnName' like '%val%' Symbol对应值只对KeyType="where"才有效 更多值类型请移步:http://knexjs.org/ 返回值为:{code: 1, msg: '信息获取成功', data: result} b)、getListInfoForPage:该类型和getModuleList差不多,但是多了两个参数:PageIndex、PageSize 返回值为: {code: 1, msg: '信息获取成功', data: {ReturnData: returnData,Count: count,PageCount: pageCount }} c)、getModule:该类型和getModuleList一样,不再赘述 d)、insert:数据新增操作,需要传值参数为:"CheckId"、"token"、"JsonString"、"DateTimeList" JsonString:为对象字符串 例如:"{Name:'ydlemon'}" ID都不需要创建,服务端自动创建。【注:对应的值不包含时间格式的字段】 DateTimeList:需要创建的时间参数字符串数值,该值存储的是对应时间格式数据库列名 例如:"["CreateTime"]" e)、update:数据更新操作,需要传值参数为:"CheckId"、"token"、"JsonString"、"DateTimeList" JsonString:为对象字符串 例如:"{Name:'ydlemon'}" ##切记:传的值需要含有ID字段对应值 DateTimeList:需要更新的时间参数字符串数值,该值存储的是对应时间格式数据库列名 例如:"["CreateTime"]" f)、remove:数据删除操作,需要传值参数为:"CheckId"、"token"、"Id" ``` ##Request ``` bash http://localhost:3000/api/public/makeController //创建控制类 http://localhost:3000/api/public/makeModel //创建model //普通请求: http://localhost:3000/api/{0}/{1} {0}=>对应数据库表名,首字母小写 {1}=>对应的接口方法 ```