当前位置: 首页 > news >正文

Egg.js使用ejs快速自动生成resetful风格的CRUD接口

目前的插件能够自动生成egg的crud的都不太好用 我们自己写一个吧 ejs模块 也方便定制 

安装依赖

npm install ejs --save

ejs 是一个简单易用的模板引擎,常用于 Node.js 应用程序中

在项目根目录下创建 template/controller.ejs  模板文件

'use strict';const Controller = require('egg').Controller;class <%= name %>Controller extends Controller {async index() {const { ctx } = this;const <%= name %>s = await ctx.model.<%= name %>.findAll();ctx.body = <%= name %>s;}async create() {const { ctx } = this;const <%= name %> = await ctx.model.<%= name %>.create(ctx.request.body);ctx.body = <%= name %>;}async show() {const { ctx } = this;const <%= name %> = await ctx.model.<%= name %>.findByPk(ctx.params.id);ctx.body = <%= name %>;}async update() {const { ctx } = this;const <%= name %> = await ctx.model.<%= name %>.findByPk(ctx.params.id);await <%= name %>.update(ctx.request.body);ctx.body = <%= name %>;}async destroy() {const { ctx } = this;const <%= name %> = await ctx.model.<%= name %>.findByPk(ctx.params.id);await <%= name %>.destroy();ctx.status = 204;}}module.exports = <%= name %>Controller;

在项目根目录下创建 template/gen-controller.js  模板生成执行文件

个人习惯 model大写  其他层文件小写 

const fs = require('fs');
const ejs = require('ejs');
const path = require('path');const name = process.argv[2]; // 从命令行参数获取控制器名称
const template = fs.readFileSync(path.join(__dirname, 'controller.ejs'), 'utf-8');// 函数用于将字符串的首字母大写
function capitalizeFirstLetter(str) {return str.charAt(0).toUpperCase() + str.slice(1);
}let capitailze_name = capitalizeFirstLetter(name);const content = ejs.render(template, { name: capitailze_name });fs.writeFileSync(path.join(__dirname, `../app/controller/${name.charAt(0).toLowerCase() + name.slice(1)}.js`), content, 'utf-8');

上面的模板文件旨在生成restful接口  ,同时直接调用model ,在一些不复杂的场景中直接使用

配置路由文件app/router.js

// activationsrouter.resources("activations", "/activations", controller.activations)

最后 代码生成  restful的增删改查就直接生成好了 

node gen-controller.js activations

model层 通过 egg-sequelize-auto查询数据库直接生成  数据库表通过 npx 也是自动生成的 

总结 egg一整套从建表到CRUD 自动生成流程

  1. 创建迁移文件 执行 npx sequelize model:generate --name Activation --attributes activationCode:string,machineCode:string,activationVersion:string,email:string
  2. 执行迁移创建数据库表 npm run db 
  3. 通过数据库表再反向映射生成model层  npm run model
  4. 通过我们上面写的模板文件 node gen-controller.js activations 直接生成control层 ,自动完成了具有restful风格的CURD
  5. 后续写一个插件 完成上面的半自动流程 ,实现 定义完成数据库表 ,即而成crud

1-5有不懂的,可以看上一篇文章

相关文章:

Egg.js使用ejs快速自动生成resetful风格的CRUD接口

目前的插件能够自动生成egg的crud的都不太好用 我们自己写一个吧 ejs模块 也方便定制 安装依赖 npm install ejs --save ejs 是一个简单易用的模板引擎&#xff0c;常用于 Node.js 应用程序中 在项目根目录下创建 template/controller.ejs 模板文件 use strict;const Co…...

自动化抖音点赞取消脚本批量处理

&#x1f31f; 前言 欢迎来到我的技术小宇宙&#xff01;&#x1f30c; 这里不仅是我记录技术点滴的后花园&#xff0c;也是我分享学习心得和项目经验的乐园。&#x1f4da; 无论你是技术小白还是资深大牛&#xff0c;这里总有一些内容能触动你的好奇心。&#x1f50d; &#x…...

基于YOLOv8深度学习的智能车牌检测与识别系统【python源码+Pyqt5界面+数据集+训练代码】目标检测、深度学习实战

背景及意义 智能车牌检测与识别系统通过使用最新的YOLOv8与PaddleOCR算法能够迅速、准确地在多种环境下实现实时车牌的检测和识别。本文基于YOLOv8深度学习框架&#xff0c;通过16770张图片&#xff0c;训练了一个进行车牌检测模型,可以检测蓝牌与绿牌,然后对检测到的车牌使用O…...

qt QGraphicsGridLayout详解

一、概述 QGraphicsGridLayout是Qt框架中用于在QGraphicsScene中布置图形项的一个布局管理器。它类似于QWidget中的QGridLayout&#xff0c;但主要处理的是QGraphicsItem和QGraphicsWidget等图形项。通过合理设置网格位置、伸缩因子和尺寸&#xff0c;可以实现复杂而灵活的布局…...

数字处理系列

&#xff08;1&#xff09;将数字转化成中文的过滤器 <template><div><p>数字转中文&#xff1a;{{ 110 | numberToChinese }}</p></div></template><script>export default {filters: {numberToChinese(num) {const chineseNums …...

基于开源Jetlinks物联网平台协议包-MQTT自定义主题数据的编解码

目录 前言 1.下载官方协议包 2.解压 3.自定义主题 4.重写解码方法 5.以下是我解析后接收到的数据 前言 最近这段时间&#xff0c;一直在用开源的Jetlinks物联网平台在学习&#xff0c;偶尔有一次机会接触到物联网设备对接&#xff0c;在协议对接的时候&#xff0c;遇到了…...

【Python】Python2.7升级Python3

需求背景 服务是跑在docker的容器里的&#xff0c;因此要新建image依赖环境是Ubuntu&#xff0c;老的是16.4。 步骤 先准备环境&#xff0c;因为只有你的环境上去了&#xff0c;运行代码的时候才会报错&#xff0c;这样才会把需要改的代码暴露出来。 python3.5目前也是被遗弃的…...

Python 内置函数 round() 详解

在 Python 编程中&#xff0c;round() 函数是一个非常实用的内置函数&#xff0c;用于对数字进行四舍五入。无论是在数据处理、财务计算还是科学计算中&#xff0c;round() 函数都能帮助我们得到所需的精确值。本文将详细介绍 round() 函数的用法和注意事项。 1. round() 函数…...

JavaScript入门中-流程控制语句

本文转载自&#xff1a;https://fangcaicoding.cn/article/52 大家好&#xff01;我是方才&#xff0c;目前是8人后端研发团队的负责人&#xff0c;拥有6年后端经验&3年团队管理经验&#xff0c;截止目前面试过近200位候选人&#xff0c;主导过单表上10亿、累计上100亿数据…...

kconfig语法(一)

一、安装Kconfiglib python -m pip install windows-curses python -m pip install kconfiglib二、使用样例 ①创建kconfig文件。 ②在kconfig文件添加内容: config KCONFIG_DEMO_ITEM1boolprompt "demonstate item1 for bool learning"config KCONFIG_DEMO_ITE…...

十七、行为型(命令模式)

命令模式&#xff08;Command Pattern&#xff09; 概念 命令模式是一种行为型设计模式&#xff0c;它将请求封装成一个对象&#xff0c;从而使您可以使用不同的请求对客户进行参数化&#xff0c;排队请求&#xff0c;以及支持可撤销操作。通过这种模式&#xff0c;调用操作的…...

原材料供应商的GRS认证证书过期了怎么办?

在全球纺织和时尚产业中&#xff0c;GRS&#xff08;Global Recycle Standard&#xff0c;全球再生标准&#xff09;认证已成为衡量企业环保和可持续发展的重要指标。然而&#xff0c;当原材料供应商的GRS认证证书过期时&#xff0c;企业需迅速采取行动&#xff0c;以确保供应链…...

C++编程:实现一个基于原始指针的环形缓冲区(RingBuffer)缓存串口数据

文章目录 0. 引言1. 使用示例2. 流程图2.1 追加数据流程2.2 获取空闲块流程2.3 处理特殊字符流程2.4 释放块流程2.5 获取下一个使用块流程 3. 代码详解3.1 Block 结构体3.2 RingBuffer 类3.3 主要方法解析append 方法currentUsed 和 currentUsing 方法release 方法nextUsed 方法…...

LangChain 创始人万字科普:手把手教你设计 Agent 用户交互

LangChain 可以算是 LLM 时代做 AI 应用开发必备的框架和平台&#xff0c;从模型选择、数据库链接与各种 Agent 搭建等&#xff0c;AI 应用的搭建、运行和管理都可以在 LangChain 上进行。 某种意义上&#xff0c;LangChain 可能是最了解 Agent&#xff08;智能体&#xff09;…...

Docker 用例:15 种最常见的 Docker 使用方法

容器化应用程序而不是将它们托管在虚拟机上是过去几年一直流行的概念&#xff0c;使容器管理流行起来。Docker 处于这一转变的核心&#xff0c;帮助组织无缝地采用容器化技术。最近&#xff0c;Docker 用例遍布所有行业&#xff0c;无论规模大小和性质如何。 什么是Docker&…...

若依 RuoYi4.6.0 代码审计

环境布置&#xff1a; 到官网下载源码&#xff1a;https://github.com/yangzongzhuan/RuoYi 采用phpstudy集成数据库&#xff0c;5.7版本。JDK1.8。 IDEA打开项目&#xff0c;等待自动加载&#xff0c;修改application-druid.yml配置文件&#xff1a;数据库名&#xff0c;账…...

C语言入门-选择结构

在编程中&#xff0c;我们经常需要根据不同的条件执行不同的操作。C语言为此提供了几种非常实用的选择结构&#xff1a;条件运算符、逻辑运算、if语句和switch语句。接下来&#xff0c;让我们深入探讨这些重要的知识点&#xff0c;帮助你更好地理解和掌握C语言的选择结构。 1.…...

Legion拯救者 刃7000K-26IAB联想台式机T5 26IAB7(90SU,90SV,90SW,90SX)原厂Windows11系统镜像下载

适用机型&#xff1a;【90SW、90SX、90SU、90SV】 链接&#xff1a;https://pan.baidu.com/s/1gJ4ZwWW2orlGYoPk37M-cg?pwd4mvv 提取码&#xff1a;4mvv lenovo联想原装WIN系统自带所有驱动、出厂主题专用壁纸、系统属性联机支持标志、系统属性专属LOGO标志、Office办公软…...

代码随想录算法训练营第二十四天|Day24 回溯算法

93.复原IP地址 题目链接/文章讲解&#xff1a;https://programmercarl.com/0093.%E5%A4%8D%E5%8E%9FIP%E5%9C%B0%E5%9D%80.html 视频讲解&#xff1a;https://www.bilibili.com/video/BV1XP4y1U73i/ 思路 char** result; int resultTop; int segments[3]; int isValid(char* s…...

vue elementui table编辑表单时,弹框增加编辑明细数据

需求: 前端进行新增表单时&#xff0c;同时增加表单的明细数据。明细数据部分&#xff0c;通过弹框方式增加或者编辑。 效果图&#xff1a; 代码&#xff1a; <!-- 新增主表弹窗 Begin --><el-dialog:title"titleInfo"top"5vh"centerwidth"…...

知识图谱与智能体如何革新小说创作:graphify-novel项目深度解析

1. 项目概述&#xff1a;用知识图谱为你的小说创作装上“第二大脑”如果你是一位小说创作者&#xff0c;无论是网文作者、传统文学写作者&#xff0c;还是游戏叙事设计师&#xff0c;你一定经历过这样的痛苦时刻&#xff1a;写到第30章&#xff0c;突然想不起某个配角在第5章出…...

如何快速配置ComfyUI ControlNet预处理器:完整安装与使用指南

如何快速配置ComfyUI ControlNet预处理器&#xff1a;完整安装与使用指南 【免费下载链接】comfyui_controlnet_aux ComfyUIs ControlNet Auxiliary Preprocessors 项目地址: https://gitcode.com/gh_mirrors/co/comfyui_controlnet_aux ComfyUI ControlNet Aux预处理器…...

AD导出Gerber到CAM350拼板全流程避坑指南(附文件漏导出自查清单)

AD导出Gerber到CAM350拼板全流程避坑指南&#xff08;附文件漏导出自查清单&#xff09; 在硬件产品开发中&#xff0c;PCB设计到生产的转换环节往往隐藏着诸多"暗礁"。我曾亲眼见过一个团队因为钻孔文件覆盖问题导致生产延误两周&#xff0c;损失近十万元。本文将分…...

Modbus RTU 与 Modbus TCP 深入指南-结束语

结束语本指南涵盖了Modbus RTU和Modbus TCP的物理层、数据链路层、报文格式、CRC算法、通信模型、功能码详解、性能优化、安全加固、故障排查、工程实践、过渡策略及现代替代方案。核心要点回顾&#xff1a;RTU&#xff1a;串口&#xff0c;远距离&#xff0c;简单可靠&#xf…...

Sketch Find and Replace插件终极指南:如何快速批量替换设计文本

Sketch Find and Replace插件终极指南&#xff1a;如何快速批量替换设计文本 【免费下载链接】Sketch-Find-And-Replace Sketch plugin to do a find and replace on text within layers 项目地址: https://gitcode.com/gh_mirrors/sk/Sketch-Find-And-Replace 你是否曾…...

避坑指南:用Qt为STM32项目写上位机时,我遇到的5个串口和界面难题

避坑指南&#xff1a;用Qt为STM32项目写上位机时&#xff0c;我遇到的5个串口和界面难题 第一次用Qt给STM32开发上位机时&#xff0c;我以为串口通信不过是简单的数据收发&#xff0c;界面设计拖拖控件就能搞定。直到项目进度被各种诡异bug拖慢两周后&#xff0c;才意识到自己踩…...

3分钟搞定!Windows网络测速神器iperf3完整使用指南

3分钟搞定&#xff01;Windows网络测速神器iperf3完整使用指南 【免费下载链接】iperf3-win-builds iperf3 binaries for Windows. Benchmark your network limits. 项目地址: https://gitcode.com/gh_mirrors/ip/iperf3-win-builds 还在为网络速度不稳定而烦恼吗&#…...

【独家首发】DeepSeek-VL与R1在HumanEval上的性能断层:87.3 vs 62.1分,这15.2分差距究竟卡在哪一行代码?

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;DeepSeek-VL与R1在HumanEval上的性能断层现象 HumanEval 是评估代码生成模型逻辑正确性的黄金基准&#xff0c;其测试集由 164 道手写 Python 编程题构成&#xff0c;每题包含函数签名、文档字符串和若…...

不止于Kali:在Ubuntu、Debian上给COMFAST CF-812AC无线网卡装RTL8812BU驱动的通用教程

跨平台兼容&#xff1a;Ubuntu/Debian系统安装COMFAST CF-812AC无线网卡驱动全指南 COMFAST CF-812AC作为一款高性价比的双频无线网卡&#xff0c;凭借Realtek RTL8812BU芯片的稳定表现&#xff0c;成为许多开发者和技术爱好者的首选。然而&#xff0c;当用户从Kali Linux转向U…...

AI编程助手成本优化:混合路由策略如何将API账单降低73%

1. 项目概述&#xff1a;当AI编程助手成为API预算的“吞金兽”如果你正在为团队开发或集成一个AI编程助手&#xff0c;并且看着每月五位数的API账单感到头皮发麻&#xff0c;这篇文章就是为你准备的。我亲眼见过不少开发团队&#xff0c;在享受着AI辅助编程带来的效率提升时&am…...