1 Star 0 Fork 0

xxy/heros

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
handler.js 6.84 KB
一键复制 编辑 原始数据 按行查看 历史
const path = require('path')
const fs = require('fs')
// 引入实现文件上传的第三方模块
const formidable = require('formidable')
const jwt = require('jsonwebtoken')
// 这个模块实现真正的业务处理
// 引入数据库模块
const mysql = require('mysql')
// 创建一个链接并添加配置
const conn = mysql.createPool({
host: 'localhost',
user: 'root',
password: '123456',
database: 'mybase'
})
module.exports = {
// 1.响应所有英雄数据: get /getalldata
getalldata: function (req, res) {
// 创建sql语句
let sql = 'select * from heros where isdel = 0'
// 调用方法执行sql语句并接收处理结果
conn.query(sql, (error, results) => {
if (error) {
res.json({
code: 500,
msg: '数查询失败,请重新输入'
})
} else {
res.json({
code: 200,
msg: '数据查询成功',
// 一定要记得将数据响应,查询所获取的结果是数组 data这个键是我自己定义的
data: results
})
}
})
},
// 2.实现文件上传
uploadFile: function (req, res) {
// 创建文件上传对象
const form = formidable()
// 添加文件上传的配置
// 1.配置上传文件的存放目录,这里注意,一定要设置绝对路径
form.uploadDir = __dirname + '/public/images'
// 2.配置保留扩展名
form.keepExtensions = true
// 3.实现文件上传
// req:上传文件需要获取到用户所传递的数据及其它的相关信息
// 上传完成之后,就自动调用所传入的回调函数,同时给这个回调传入三个参数
// err:上传文件失败的错误信息对象
// fields:本次传递普通的键值对,它是一个对象
// files:这是当前上传文件的原始信息和上传成功之后的服务器端的文件信息
form.parse(req, (err, fields, files) => {
if (err) {
res.json({
code: 500,
msg: '文件上传失败'
})
} else {
// console.log(fields);
// console.log('------------------')
// console.log(files);
// console.log('------------------')
// console.log(files.img.path);
// console.log('------------------')
// console.log(path.basename(files.img.path));
res.json({
code: 200,
msg: '文件上传成功',
img: path.basename(files.img.path)
})
}
})
},
// 3.实现用户数据的新增
add: function (req, res) {
// console.log(req.body);
// 接收参数
if (!req.body.name) { // 说明name没有
return res.json({
code: 400,
msg: 'name参数不正确'
})
}
// 创建sql语句
let sql = 'insert into heros set ?'
// 调用方法执行sql语句并接收处理结果
conn.query(sql, req.body, (err) => {
if (err) {
res.json({
code: 500,
msg: '新增错误'
})
} else {
res.json({
code: 200,
msg: '新增成功'
})
}
})
},
// 4.根据id获取数据库数据
getHeroById: function (req, res) {
// 接收参数id,express中接收get方式所传递的参数,通过req.query,它是一个对象
// console.log(req.query);
let id = req.query.id
// console.log(id);
if (!req.query.id) {
return res.json({
code: 400,
msg: 'id参数'
})
}
// 创建sql语句
let sql = 'select * from heros where id = ' + id
// 调用方法执行sql语句并接收处理结果
conn.query(sql, (err, results) => {
if (err) {
console.log(err);
res.json({
code: 500,
msg: '数据查询失败'
})
} else {
console.log(results, results[0]);
res.json({
code: 200,
msg: '数据查询成功',
// 1.查询返回的是结果集,对应的数据类型是数组
// 2.id是唯一的,所以如果查询,只能返回1条数据,意味着我们可以在后台获取到这数据对象进行响应,而不是直接响应数组
data: results[0]
})
}
})
},
// 5.编辑用户数据
edit: function (req, res) {
console.log(req.body);
if (!req.body.id) {
return res.json({
code: 400,
msg: 'id参数不正确'
})
}
// 创建sql语句
let sql = 'update heros set ? where id = ?'
// 数据请求
conn.query(sql, [req.body, req.body.id], (err) => {
if (err) {
res.json({
code: 500,
msg: '编辑成功'
})
} else {
res.json({
code: 200,
msg: '编辑成功'
})
}
})
},
// 6.实现英雄数据的删除
delete: function (req, res) {
// 获取id
let id = req.query.id
// console.log(req.query);
// 创建sql语句
let sql = 'update heros set isdel = 1 where id=' + id
// 数据请求
conn.query(sql, (err) => {
if (err) {
res.json({
code: 500,
msg: '删除失败'
})
} else {
res.json({
code: 200,
msg: '删除成功'
})
}
})
},
// 7.响应登录
getLogin: function (req, res) {
// 读取登录页面
fs.readFile(path.join(__dirname, '/views/login.html'), (err, data) => {
if (err) {
console.log(err);
res.json({
code: 500,
msg: '响应失败'
})
} else {
res.end(data)
}
})
},
// 8.实现登录
postLogin: function (req, res) {
console.log(req.body);
let obj = req.body
// 根据用户名查询用户数据
let sql = 'select * from manager where username =?'
// 数据处理
conn.query(sql, [obj.username], (err, results) => {
if (err) {
res.json({
code: 500,
msg: '服务器异常'
})
} else {
// 判断根据用户名是否查询到了数据
if (results.length > 0) {
// 再判断密码
if (results[0].password == obj.password) {
// 生成token
// sign:就可以使用第三方模块生成token
// sign(用户自定义数据,密钥,配置)
// expiresIn:tonken有效期
const token = jwt.sign({
username: results[0].username
}, 'hero', {
expiresIn: '3000s'
})
// 响应token到客户端
res.json({
code: 200,
msg: '登录成功',
token: token
})
} else {
res.json({
code: 500,
msg: '密码错误'
})
}
} else {
res.json({ //用户名不存在
code: 500,
msg: '用户名不存在'
})
}
}
})
}
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/StudyRaise/heros.git
git@gitee.com:StudyRaise/heros.git
StudyRaise
heros
heros
master

搜索帮助