1 Star 0 Fork 63

李浩leehom / led

forked from qwdingyu / led 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
MIT

项目介绍:

本项目是一个用nodejs实现的 go-view的后端,方便大家使用
除此之外,nodejs的后端还提供了,api功能,只要在数据库中配置sql,就能满足日常配置大屏和报表的需求。 联系方式:qq:285861181

go-view 代码仓库

主要技术栈:

名称 版本
express 4.18.2
mysql2 3.1.0
sequelize 6.28.0
详见 package.json 😁

使用方式

安装

npm install

启动

  • 默认:
npm start
  • 开发环境:
npm run dev
需要安装:npm i -g nodemon cross-env
  • 生产环境:
npm run prod
  • 生产环境-pm2:
npm run pm2
  • 开发环境使用-sqlserver:
npm run sqlserver

项目结构

.
├── README.en.md
├── README.md
├── db
│   └── mysql.sql   针对mysql数据需要的表结构
├── package.json    package文件
├── server.js       服务启动文件
├── src
│   ├── config      配置文件
│   ├── controllers 控制器
│   ├── models      model层
│   ├── routers     路由
│   ├── services    数据库操作
│   └── utils       工具类
└── tmp             文件上传临时目录
    └── upload/tmp

数据库脚本参考

登录信息

用户名:admin 密码:123123 关于默认密码的问题,请参考:地址

配置信息在config文件中定义

数据库连接配置:

sequelizeConfig: {
    username: 'root',
    password: 'mes',
    database: 'smt',
    connect: {
      host: '127.0.0.1',
      port: 3306,
      dialect: 'mysql',
      dialectOptions: {
        multipleStatements: true,
        charset: 'utf8mb4',
        supportBigNumbers: true,
        bigNumberStrings: true,
        decimalNumbers: true
      },
      timezone: '+08:00',
      define: {
        charset: 'utf8mb4',
        freezeTableName: true,
        timestamps: true,
        createdAt: 'created_at',
        updatedAt: 'updated_at',
        paranoid: false, //开启假删除
        // 定义全局的钩子
        hooks: {}
      },
      pool: {
        max: 5, // 连接池最大链接数量
        min: 0, // 最小连接数量
        acquire: 30000, //建立连接最长时间
        idle: 10000 //空闲最长连接时间
      }
    }

业务API配置,在数据库表api中定义

以下sql为mysql脚本,sql中@line@,为api调用时需要传递的参数,在后端程序会自动根据@line@替换成对应的值。

  • 报表配置-不分页:
SELECT * FROM	bm_ipinfo WHERE	plineno = '@line@' AND station='@station@';
  • 报表配置-分页:
SELECT COUNT(*) AS total FROM bm_ipinfo WHERE plineno = '@line@' AND station='@station@';
SELECT * FROM bm_ipinfo WHERE plineno = '@line@' AND station='@station@' LIMIT @offset@,@rows@;
  • 支持跨数据库的配置方式,从而满足一套配置,切换不同数据库的需求: 具体语法参考:knex
knex('pms_plan')
  .select()
  .where({ company_id: '@company_id@', plant_id: '@plant_id@', line: '@line@' })
  .whereBetween('created_at', [moment('@GTD@').format('YYYY-MM-DDTHH:mm:ssZ'), moment('@LTD@').format('YYYY-MM-DDTHH:mm:ssZ')])
  .where(qb => {
    if ('@model@') qb.where('model', '@model@')
    if ('@sn@') qb.where('sn', 'like', `%@sn@%`)
  })
  .orderBy([ { column: 'plan_date' }, { column: 'list_order', order: 'asc' } ])
  .paginate({ perPage: @rows@, currentPage: @page@ })

业务API测试(vscode,推荐使用Thunder Client工具)

  • 调用的url和参数: 所有api的url的访问都是通过 http:127.0.0.1:4444/api/getDataByApiId进行,通过参数中的apiId进行识别。以下演示了post的参数,get访问也可以只是测试时参数传递不同而已

  • 分页的参数传递

{
  "restype":"datagrid",
  "apiId": "021ea7a0-d878-11ea-a6ca-35634091a02b",
  "line": "H",
  "station":"6",
  "page":1,
  "rows":10
}
  • 不分页的参数传递
{
  "apiId": "021ea7a0-d878-11ea-a6ca-35634091a02b",
  "line": "H",
  "station":"6"
}
  • 参数解释:
"restype":"前端需要的数据格式,不同的前端所要求的返回格式不同(一般情况:不分页-不需要此字段;分页-datagrid即可)",
"apiId":"数据库api表中id字段,用于标识调用哪个脚本进行返回",
"line、station": "sql语句、存储过程、knex脚本中所需要的变量",
"page":"第几页",
"rows":"页大小"
  • api数据库表中的配置 api表
  • api测试情况 分页 不分页

sequelize多数据库适配

  • 安装对应的package,本项目中只适配了mysql、sqlserver;其他数据库参考下面内容进行适配
  • 需要再配置文件config中增加对应的数据库连接串
  • 不同数据库的连接串
npm install --save pg pg-hstore # Postgres
npm install --save mysql2
npm install --save mariadb
npm install --save sqlite3
npm install --save tedious # Microsoft SQL Server
npm install --save oracledb # Oracle Database
  • sequelize详细配置文档见:地址

集成过程中的注意事项

TODOLIST

  • 增加web页面用于管理和维护api表的配置
  • 增加用户授权机制
  • 完善和优化其他功能
MIT License Copyright (c) 2023 qwdingyu Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

简介

本项目是一个用nodejs实现的 go-view的后端,方便大家使用 展开 收起
MIT
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/leeho/led.git
git@gitee.com:leeho/led.git
leeho
led
led
master

搜索帮助

344bd9b3 5694891 D2dac590 5694891