diff --git "a/\345\224\220\345\255\235\345\235\232/2024-04-01sequelize.md" "b/\345\224\220\345\255\235\345\235\232/20240401-sequelize.md" similarity index 100% rename from "\345\224\220\345\255\235\345\235\232/2024-04-01sequelize.md" rename to "\345\224\220\345\255\235\345\235\232/20240401-sequelize.md" diff --git "a/\345\224\220\345\255\235\345\235\232/2024-04-02\351\233\206\346\210\220.md" "b/\345\224\220\345\255\235\345\235\232/20240402-\351\233\206\346\210\220.md" similarity index 100% rename from "\345\224\220\345\255\235\345\235\232/2024-04-02\351\233\206\346\210\220.md" rename to "\345\224\220\345\255\235\345\235\232/20240402-\351\233\206\346\210\220.md" diff --git "a/\345\224\220\345\255\235\345\235\232/2024-04-07\350\241\245\345\205\205.md" "b/\345\224\220\345\255\235\345\235\232/20240407-\350\241\245\345\205\205.md" similarity index 100% rename from "\345\224\220\345\255\235\345\235\232/2024-04-07\350\241\245\345\205\205.md" rename to "\345\224\220\345\255\235\345\235\232/20240407-\350\241\245\345\205\205.md" diff --git "a/\345\224\220\345\255\235\345\235\232/20240408-\345\242\236\345\210\240\346\224\271\346\237\245\345\220\216\347\253\257.md" "b/\345\224\220\345\255\235\345\235\232/20240408-\345\242\236\345\210\240\346\224\271\346\237\245\345\220\216\347\253\257.md" new file mode 100644 index 0000000000000000000000000000000000000000..144e807802e8ccb2a9fb1e353143ff3b5a569cc7 --- /dev/null +++ "b/\345\224\220\345\255\235\345\235\232/20240408-\345\242\236\345\210\240\346\224\271\346\237\245\345\220\216\347\253\257.md" @@ -0,0 +1,172 @@ +### 增删改查后端相关代码 + +``` +import Koa from 'koa' +import Router from 'koa-router' +import bodyparser from 'koa-bodyparser' +import cors from 'koa2-cors' +import { DataTypes, Sequelize } from 'sequelize' + +const app = new Koa(); +let router = new Router(); + +// 数据库的ORM工具实例化 + +let sequelize = new Sequelize('cx', 'sa', '123456', { + host: 'localhost', + dialect: 'mssql' +}) + +// const sequelize = new Sequelize('node_demo', 'sa', '123456', { +// host: 'ACODE-RNSTCQHZE\\SQLEXPRESS', +// dialect: 'mssql'/* one of 'mysql' | 'postgres' | 'sqlite' | 'mariadb' | 'mssql' | 'db2' | 'snowflake' | 'oracle' */ +// }); + +const Films = sequelize.define('Films', { + director: { type: DataTypes.STRING }, + actor: { type: DataTypes.STRING }, + score: { type: DataTypes.INTEGER }, + flag: { type: DataTypes.STRING }, +}) + + +await Films.sync(); + + +// 读取(相对于数据库的查询) +router.get('/films/:id?', async (ctx) => { + let id = ctx.params.id * 1 || 0; + console.log(undefined * 1); + /* + 1. 尝试获取id,如果id为0,则说明获取的是列表数据 + 2. 通过ORM工具,向数据库获取列表数据或者指定行的数据(根据业务需要可能需要分页) + 3. 通过ctx.body返回响应数据(包含列表数据或者指定行数据) + { + code:1000, + data:'', + msg:'获取数据成功' + } + */ + console.log(id); + + let data; + if (id > 0) { + let item = await Films.findByPk(id); + data = item; + } else { + let list = await Films.findAll(); + data = list; + } + + ctx.body = { + code: 1000, + data: data, + msg: '获取指定电影信息' + } +}) + +// 创建电影(相对于数据库的插入) +router.post('/films', async (ctx) => { + let obj = ctx.request.body; + console.log(obj); + /* + 1. 获取传入的表单数据(实体参数)(根据业务需要可能需要做数据验证) + 2. 复用ORM工具,将数据写入数据库(数据验证) + 3. 返回创建成功的信息(根据业务,返回带id的记录) + */ + let row = await Films.create(obj); + + ctx.body = { + code: 1000, + data: row, + msg: '创建电影成功' + } +}) +// 创建用户(相对于数据库的插入) +router.post('/users', async (ctx) => { + let obj = ctx.request.body; + /* + 1. 获取传入的表单数据(实体参数)(根据业务需要可能需要做数据验证) + 2. 复用ORM工具,将数据写入数据库(数据验证) + */ +}) + +// 修改(相对于数据库的更新) +router.put('/films/:id', async (ctx) => { + let id = ctx.params.id || 0; + let obj = ctx.request.body; + console.log(id); + console.log(obj); + /* + 1. 通过id在数据库中查找对应记录 + 2. 如果有对应的记录,则进行修改;如果没有对应记录,则提示修改失败 + 3. 返回响应,剩下的让前端自己判断 + */ + let item = await Films.findByPk(id); + if (item) { + let data = await Films.update(obj, { + where: { + id: id + } + }); + + ctx.body = { + code: 1000, + data: data, + msg: "修改成功" + } + } else { + ctx.body = { + code: 4000, + data: null, + msg: '找不到' + } + } +}) + +// 删除(相对于数据库的删除(软删除)) +router.delete('/films/:id', async (ctx) => { + let id = ctx.params.id || 0; + console.log(id); + /* + 1. 查找id对应的记录 + 2. 如果找到,则删除成功,返回响应提示成功;否则删除失败,返回未找到的响应 + */ + let row = await Films.findByPk(id); + + if (row) { + Films.destroy({ + where: { + id: id + } + }) + + ctx.body = { + code: 1000, + data: null, + msg: "删除成功" + } + } else { + ctx.body = { + code: 4000, + data: null, + msg: "找不到你要找的电影" + } + } +}) + +// 解决跨域问题 +app.use(cors()); +// 解决post、put请求拿到表单数据的问题 +app.use(bodyparser()); +// 解决路由问题 +app.use(router.routes()); + +let port = 3000; + +app.listen(port); + +console.log(`服务运行于此:http://localhost:${port}`); + + +``` \ No newline at end of file diff --git "a/\345\224\220\345\255\235\345\235\232/20240409-\345\242\236\345\210\240\346\224\271\346\237\245\345\211\215\347\253\257.md" "b/\345\224\220\345\255\235\345\235\232/20240409-\345\242\236\345\210\240\346\224\271\346\237\245\345\211\215\347\253\257.md" new file mode 100644 index 0000000000000000000000000000000000000000..896fb1f9e170e882a47362443bc928705cebc809 --- /dev/null +++ "b/\345\224\220\345\255\235\345\235\232/20240409-\345\242\236\345\210\240\346\224\271\346\237\245\345\211\215\347\253\257.md" @@ -0,0 +1,163 @@ +### 增删改查前端相关代码 + +``` +function renderData(dataArray) { + let tb = $('#dataBody'); + dataArray.forEach(item => { + let html = ` +