在路由前创建
//配置cors中间件,解决接口跨域问题
const cors = require('cors')
app.use(cors())
预检请求不会发送实质性的数据
//导入数据库模块
const mysql = require('mysql')//建立于mysql数据库的连接方式
const db = mysql.createPool({host: '127.0.0.1',port: 23306,user: 'root',password: "0071hanxiaolei",database: 'mybatis'
})//测试mysql是否可以正常工作
db.query('select 1', (err, results) => {//mysql 模块工作期间报错if (err) return console.log(err.message)//能够执行的sql语句console.log(results)
})
//查询users表中的所有数据const sqlstr = 'select * from tb_user'db.query(sqlstr, (err, results) => {//查询数据失败if (err) return console.log(err.message)//查询数据成功//注意如果执行的时select 查询语句,则执行的结果时数组console.log(results)
})
//向tb_user中,新增一条数据,
const user = {username: 'spin',password: '333333',gender: '1',addr: '北京'
}
//定义待执行的sql语句
const sqlstr3 = 'insert into tb_user(username,password,gender,addr) values(?,?,?,?)'//执行sql语句
db.query(sqlstr3, [user.username, user.password, user.gender, user.addr], (err, results) => {//执行sql语句失败if (err) return console.log(err.message)//成功了//知意这里执行的是insert into插入语句,则results是一个对象//可以通过 affectedRows 属性,来判断是否插入数据成功if (results.affectedRows == 1) {console.log("插入数据成功")}
})
注意:
需要表的字段与我们插入的属性一一对应
//演示插入数据的便捷方式
const sqlstr4 = 'insert into tb_user set ?'
//执行sql语句
db.query(sqlstr4, user, (err, results) => {if (err) return console.log(err.message)if (results.affectedRows == 1) {console.log("插入成功")}
})
//定义sql语句
const sqlstr5 = 'update tb_user set username=?,password=? where id=?'
//执行sql语句
db.query(sqlstr5, [userinfo.username, userinfo.password, userinfo.id], (err, result) => {if (err) return console.log(err.message)//执行update语句,返回的也是一个对啊想,可以通过affectedRowsif (result.affectedRows == 1) {console.log("更新成功")}
})
//向tb_user中,新增一条数据,
const user = {username: 'spin',password: '333333',gender: '1',addr: '北京'
}
//演示更新用户的便捷方式
const sqlstr6 = 'update tb_user set ? where id=?'
db.query(sqlstr6, [userinfo, userinfo.id], (err, results) => {if (err) return console.log(err.message)if (results.affectedRows == 1) {console.log("更新成功")}
})
d第二条高版本现在这么写
const {expressjwt} =require('express-jwt')
这个字符串是随意的,
const {expressjwt: expressJWT
} = require('express-jwt')//配置jwt转json对象的中间件
//只要配置成功了express-jwt这个中间件,就可以把解析出来的用户信息,挂载到req.user属性上
//可以在有token权限的接口去解析属性内容
app.use(expressJWT({secret: secretKey,algorithms: ["HS256"]
}).unless({path: ["/login"]
}))
视频里的是低版本,高版本的需要这样来设置
//具有token权限的接口,拿到token中的数据auth
app.get('/getinfo', (req, res) => {console.log(req.auth)res.send({status: 0,data: req.auth})
})
这里的user变成了auth
//具有token权限的接口,拿到token中的数据auth
app.get('/getinfo', (req, res) => {console.log(req.auth)res.send({status: 0,data: req.auth})
})
//全局错误中间件
app.use((err, req, res, next) => {if (err.name === 'UnauthorizedError') {return res.send({status: 401,message: "无效的token"})}res.send({status: 500,message: "未知错误"})
})
上一篇:防火墙的各个区域互通
下一篇:漫画:什么是插入排序算法?