Node.JS (下)

17.安装和配置数据库模块

17-1.安装数据库模块

  1. npm i mysql

17-2.配置数据库模块

  1. 导入mysql模块
// 导入mysql模块
const mysql = require('mysql')
  1. 建立与mysql数据库的连接
// 建立与mysql数据库的连接
const db = mysql.createPool({
    host:'192.168.1.9',//数据库的ip地址
    user:'root',//登录数据库的账号
    password:'qwer',//登录数据库的密码
    database:'my_db_01'//要操作的数据库名称
})
  1. 检测mysql模块是否正常工作
// 检测mysql模块是否正常工作
db.query('select 1',(err,results)=>{
    if(err){
        return console.log(err.message);
    }
    console.log(results);
})

成功连接:
请添加图片描述

18.查询和插入数据

18-1.查询数据

// 查询users的数据
db.query('select * from users',(err,results)=>{
    if(err){
        return console.log(err.message);
    }

    console.log(results);
    
})

18-2.插入数据

// 插入users的数据
// 1.要插入到users表中的对象
const user = {username:'man',password:'qwer'}
// 2.待执行的sql语句,其中?代表占位符
const sqlStr = 'insert into users (username , password) values (?,?)'
// 3.使用数组的形式,依次为?占位符提供具体的值
db.query(sqlStr,[user.username,user.password],(err,results)=>{
    if(err){
        return console.log(err.message);
    }
    if(results.affectedRows === 1){console.log('插入数据成功');} 
})

19.跟新和删除数据

19-1.跟新数据

// 更新users的数据
// 1.更新用户信息
const user = {id:1,username:'lq',password:'520'};
// 2.定义sql语句
const sqlStr = 'update users set username=?, password=? where id=?';
// 3.执行sql语句
db.query(sqlStr,[user.username,user.password,user.id],(err,results)=>{
    if(err){
        return console.log(err.message);
    }
    if(results.affectedRows === 1){console.log('更新数据成功');} 
})

19-2.删除数据

// 删除users的id=4的数据
// 1.定义sql语句
const sqlStr = 'delete from users where id=?';
// 2.执行sql语句
db.query(sqlStr,4,(err,results)=>{
    if(err){
        return console.log(err.message);
    }
    if(results.affectedRows === 1){console.log('删除数据成功');} 
})

20.session中间件的使用

20-1.session中间件的配置

  1. 导入session中间件
const session = require('express-session')
  1. 注册session为全局中间件
app.use(session({
    // 固定写法
    secret:'lq',
    resave:false,
    saveUninitialized:ture
}))

20-2.向session中存数据

// 登录的api接口
app.get('/api/login',(req,res)=>{
    if(req.body.username !== 'lq' || req.body.password !== 'qwer'){
        return res.send({
            status:1,
            msg:'登陆失败'
        })
    }
    // 登陆成功后的用户信息保存到session中
    req.session.userinfo = req.body
    // 用户的登陆状态
    req.session.isLogin = true
})

20-3.向session中取数据

// 获取用户姓名的接口
app.get('/api/username',(req,res)=>{
    // 判断用户是否登录
    if(!req.session.isLogin){
        return res.send({status:1,msg:'false'})
    }
    res.send({status:0,msg:'success',username:req.session.user.username})
})
app.listen(80 , (req,res)=>{
    console.log('express运行在192.168.0.101');
})

20-4.清除session中取数据

// 退出登录清除信息的接口
app.get('/api/loginout',(req,res)=>{
    // 用req.session.destory()清除登录信息
    req.session.destory()
    res.send({
        status:0,
        msg:'退出成功'
    })
    
})

21.在express中使用JWT

21-0.安装并导入jsonwebtoken和express-jwt

// JWT
// 导入jsonwebtoken和session-jwt
const jwt = require('jsonwebtoken')
const expressJWT = require('express-session')

21-1.secret加密解密器

  1. secret的本质就是一个字符串
  2. 当生成JWT字符串的时候,需要使用secret密钥对用户的信息进行加密,最终得到加密好的JWT字符串
  3. 当把JWT字符串解析还原成JSON对象的时候,需要使用secret密钥进行解密

21-2.jsonwebtoken生成JWT字符串

  1. 调用jsonwebtoken包提供的sign()方法,将用户的信息加密成JWT字符串,响应给客户端
  2. sign(参数一:用户信息的对象,参数二:加密方式,参数三:配置对象)
// 登录的api接口
app.get('/api/login',(req,res)=>{
    if(req.body.username !== 'lq' || req.body.password !== 'qwer'){
        return res.send({
            status:1,
            msg:'登陆失败'
        })
    }
    // 登陆成功后的用户信息保存到session中
    req.session.user = req.body
    // 用户的登陆状态
    req.session.isLogin = true

    // 在登陆成功后生成JWT字符
    res.send({
        status:0,
        msg:'登陆成功',
        token:jwt.sign({username:userinfo.username},secretKey,{expiresIn:'1h'})
    })
})

21-3.express-jwt将JWT字符串解析还原成json对象

// express-jwt将JWT字符串解析还原成json对象
app.use(expressJWT({secret:secretKey}).unless({path:[/^\api\//]}))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

忧郁火龙果

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值