diff --git "a/\351\202\271\347\246\217\347\247\221/\347\254\224\350\256\260/20240408-CRUD\345\220\216\347\253\257.md" "b/\351\202\271\347\246\217\347\247\221/\347\254\224\350\256\260/20240408-CRUD\345\220\216\347\253\257.md" new file mode 100644 index 0000000000000000000000000000000000000000..9efe44d2c1bd1ac7bb1f2d90dd762df686ae6797 --- /dev/null +++ "b/\351\202\271\347\246\217\347\247\221/\347\254\224\350\256\260/20240408-CRUD\345\220\216\347\253\257.md" @@ -0,0 +1,193 @@ +### 连接数据库 +```js + // 安装 sequelize 、tedious 依赖包 —— sqlserver + import {Op, DataTypes, Sequelize } from 'sequelize' + // 连接数据库 + const sequelize = new Sequelize('userdb', 'sa', '123456', { + host: 'ACODE-EWCLIWPVU\\SQLEXPRESS', + dialect: 'mssql' /* one of 'mysql' | 'postgres' | 'sqlite' | 'mariadb' | 'mssql' | 'db2' | 'snowflake' | 'oracle' */ + }) + // 测试数据库是否连接成功 + try { + await sequelize.authenticate(); + console.log('Connection has been established successfully.'); + } catch (error) { + console.error('Unable to connect to the database:', error); + } + // 创造模型(建表) + const user = sequelize.define('userinfo', { + name: DataTypes.STRING, + age: DataTypes.INTEGER, + sex: DataTypes.STRING, + hobby: DataTypes.STRING + }, { + // 上面会自动生成createdate等等,如果不希望有,就添加个这个 + timestamps: false + }) + // 同步数据库 + // false 才不会每次启动服务器自动刷新数据 + await sequelize.sync({ force: false }) +``` + +### 全部查询 —— 用于全部数据渲染,获取id +```js + route.get('/user/:id?', async (ctx) => { + let id = ctx.params.id * 1 || 0 + if (id > 0) { + let data = await user.findByPk(id) + if (data) { + ctx.body = { + code: 1000, + data: data, + msg: '获取指定用户成功!' + } + } + else { + ctx.body = { + code: 4000, + data: data, + msg: '获取指定用户失败!' + } + } + } + else { + let data = await user.findAll() + if (data.length !== 0) { + ctx.body = { + code: 1000, + data: data, + msg: '获取所有用户成功!' + } + } + else { + ctx.body = { + code: 4000, + msg: '获取所有用户失败!没有用户' + } + } + } + }) +``` + +### 模糊查询 +```js + route.get('/found', async (ctx)=>{ + let keywords = ctx.query.keywords.trim() + let data = await user.findAll({ + // 单个模糊查询 + // where: { + // name: { + // [Op.like]: '%keyword%' + // } + // } + + // 多个模糊查询 + where: { + [Op.or]:[ + { name: { [Op.like]: `%${keywords}%` } }, + {age: { [Op.like]: `%${keywords}%` } }, + {sex: { [Op.like]: `%${keywords}%` } }, + {hobby: { [Op.like]: `%${keywords}%` } } + ] + } + }) + if(data){ + ctx.body = { + code : 1000, + data : data, + msg : '模糊查询成功!' + } + } + else{ + ctx.body = { + code : 4000, + msg : '模糊查询失败!' + } + } +}) +``` + +### 新增 +```js + route.post('/user', async (ctx) => { + let obj = ctx.request.body + if (obj) { + let o = { + name : obj.name, + age : obj.age, + sex : obj.sex, + hobby : obj.hobby + } + await user.create(o) + let data = await user.findAll() + ctx.body = { + code: 1000, + data: data, + msg: '新增数据成功!' + } + } + else{ + ctx.body = { + code: 1000, + msg:'新增数据失败,没有添加对象!' + } + } +}) +``` + +### 修改 +```js + route.put('/user/:id', async (ctx) => { + let id = ctx.params.id + let obj = ctx.request.body + if(obj){ + let o = { + name : obj.name, + age : obj.age, + sex : obj.sex, + hobby : obj.hobby + } + await user.update(o,{ + where:{ + id: id + } + }) + let data = await user.findAll() + ctx.body = { + code: 1000, + data: data, + msg:'修改数据成功!' + } + } + else{ + ctx.body = { + code: 4000, + msg:'修改数据失败!' + } + } + +}) +``` + +### 删除 +```js + route.delete('/user/:id', async (ctx) => { + let id = ctx.params.id*1 || 0 + if(id > 0){ + await user.destroy({ where: { id: id } }) + let data = await user.findAll() + ctx.body = { + code : 1000, + data : data, + msg: '删除用户成功!' + } + } + else{ + ctx.body = { + code : 4000, + msg:'删除用户失败!' + } + } + + }) +``` \ No newline at end of file diff --git "a/\351\202\271\347\246\217\347\247\221/\347\254\224\350\256\260/20240409-CRUD\345\211\215\347\253\257.md" "b/\351\202\271\347\246\217\347\247\221/\347\254\224\350\256\260/20240409-CRUD\345\211\215\347\253\257.md" new file mode 100644 index 0000000000000000000000000000000000000000..ffe01ae86706e6cea8860565f6ab75d3a37884c2 --- /dev/null +++ "b/\351\202\271\347\246\217\347\247\221/\347\254\224\350\256\260/20240409-CRUD\345\211\215\347\253\257.md" @@ -0,0 +1,128 @@ +### 全部渲染 +```js + // 定义一个函数,用于渲染不同数组中的数据 +function renderData(dataArray) { + let tb = $('#tb tbody'); + for (let i = 0; i < dataArray.length; i++) { + let html = ` + + ${i + 1} + ${dataArray[i].name} + ${dataArray[i].age} + ${dataArray[i].sex} + ${dataArray[i].hobby} + + + + + + `; + tb.append(html); + } + } + // 页面加载完毕自动生效 + $(function () { + axios.get('http://127.0.0.1:8080/user').then(res => { + console.log(res.data.data); + let data = res.data.data + renderData(data) + }) +}) +``` + +### 新增与修改跳转 +```js + // 新增按钮,跳转 +function addData() { + location.href = './add.html' +} +// 编辑按钮,跳转 +function editData(id) { + location.href = `./edit.html?id=${id}` +} +``` + +### 删除 +```js + // 删除按钮,执行删除命令 +function deleteData(id) { + if (confirm('确认删除?')) { + axios.delete(`http://127.0.0.1:8080/user/${id}`).then(res => { + let data = res.data.data + console.log(data); + location.reload() + }) + } +} +``` + +### 模糊查询 +```js + // 模糊查询 + function findData(){ + let keywords = $('.keywords').val() + axios.get(`http://127.0.0.1:8080/found?keywords=${keywords}`).then(res=>{ + let data = res.data.data + let tr = $('tr:not(:nth-child(1))') + tr.remove() + renderData(data) + }) + } +``` + +### 新增 +```js + function addData(){ + let name = $('.name').val() + let age = $('.age').val() + let sex = $('.sex').val() + let hobby = $('.hobby').val() + let obj = { + name,age,sex,hobby + } + axios.post('http://127.0.0.1:8080/user',obj).then(res=>{ + console.log(res.data.data); + location.href = './index.html' + }) + } + function cancle(){ + location.href = './index.html' + } +``` + +### 修改 +```js + // 跳转至修改页面时,使得有原先的数据 + !function getdata() { + let url = location.href + let arr = url.split('?') + let id = arr[arr.length - 1].split('=') + let num = id[id.length - 1] + axios.get(`http://127.0.0.1:8080/user/${num}`).then(res => { + let data = res.data.data + console.log(data); + $('.id').val(data.id).prop('readonly',true).css('color','#ccc') + $('.name').val(data.name) + $('.age').val(data.age) + $('.sex').val(data.sex) + $('.hobby').val(data.hobby) + }) + }() + // 修改请求 + function editData() { + let id = $('.id').val() + let name = $('.name').val() + let age = $('.age').val() + let sex = $('.sex').val() + let hobby = $('.hobby').val() + let obj = { + name,age,sex,hobby + } + axios.put(`http://127.0.0.1:8080/user/${id}`,obj).then(res=>{ + location.href = './index.html' + }) + } + function cancle() { + location.href = './index.html' + } +``` \ No newline at end of file