首页 前端知识 前端(jquery) 后端(Node

前端(jquery) 后端(Node

2024-07-29 00:07:38 前端知识 前端哥 904 628 我要收藏

width: 500px;

height: 500px;

border-color: pink;

margin: 0 auto;

}

input{

width: 200px;

height: 30px;

margin-top: 10px;

outline: none;

}



  1. 主界面web/index.html
Document

退出

管理
    • 游客列表
    • 更新信息
    • 重置头像
    • 重置密码
    • 后端

      =====================================================================

      1. 连接数据库db/index.js

      const mysql=require(‘mysql’)

      //建立数据库连接

      const db=mysql.createPool({

      host:‘127.0.0.1’,

      user:‘root’,

      password:‘123456’,

      database:‘test2’

      })

      module.exports=db

      1. 建立路由
      • 公开路由,不用身份验证router/user.js

      const express=require(‘express’)

      const router=express.Router()

      //导入路由模块

      const user_handler=require(‘…/router-handler/user’)

      //导入验证数据中间件

      const expressJoi=require(‘@escook/express-joi’)

      //导入验证规则对象

      const {reg_sign_schema}=require(‘…/schema/user’)

      //注册新用户

      router.post(‘/reguser’,expressJoi(reg_sign_schema),user_handler.reguser)

      //登录

      router.post(‘/sign’,expressJoi(reg_sign_schema),user_handler.sign)

      module.exports=router

      • 私有路由要验证router/userinfo.js

      const express=require(‘express’)

      const router=express.Router()

      //导入路由模块

      const userinfo_handler=require(‘…/router-handler/userinfo’)

      //导入数据验证中间件

      const expressJoi=require(‘@escook/express-joi’)

      //导入验证条件

      const {update_userinfo_schema,update_password_schema,update_avatar_schema,delete_user_shema}=require(‘…/schema/user’)

      //获取用户基本信息

      router.get(‘/userinfo’,userinfo_handler.getUserinfo)

      //更新用户信息

      router.post(‘/updateUserinfo’,expressJoi(update_userinfo_schema),userinfo_handler.updataUserinfo)

      //重置密码

      router.post(‘/updatePwd’,expressJoi(update_password_schema),userinfo_handler.updatePassword)

      //更换用户头像

      router.post(‘/update/avatar’,expressJoi(update_avatar_schema),userinfo_handler.updateAvatar)

      //获取访客列表

      router.get(‘/list’,userinfo_handler.getList)

      //删除用户

      router.post(‘/delUser’,expressJoi(delete_user_shema),userinfo_handler.getDelUser)

      module.exports=router

      1. 路由执行代码
      • 公开路由执行代码router-handler/user.js

      //导入数据库模块

      const db=require(‘…/db/index’)

      //加密模块

      const bcrypt=require(‘bcryptjs’)

      //导入token模块

      const jwt=require(‘jsonwebtoken’)

      const config=require(‘…/schema/config’)

      const { TokenExpiredError } = require(‘jsonwebtoken’)

      //注册新用户

      exports.reguser=(req,res)=>{

      const userinfo=req.body

      // if(!userinfo.name||!userinfo.password){

      // // return res.send({

      // // status:1,

      // // message:‘用户名或密码不为空’

      // // })

      // return res.cc(‘用户名或密码不为空’)

      // }

      //定义数据库查询语句

      const sqlStr=‘SELECT * FROM ev_users WHERE username=?’

      db.query(sqlStr,[userinfo.username],function(err,results){

      if(err)return res.cc(err)

      if(results.length>0)return res.cc(‘用户名已占用’)

      //加密

      userinfo.password=bcrypt.hashSync(userinfo.password,10)

      //注册新用户

      const newUserSql=‘insert into ev_users set ?’

      db.query(newUserSql,{username:userinfo.username,password:userinfo.password},(err,results)=>{

      if(err)return res.cc(err)

      if(results.affectedRows!==1)return res.cc(‘注册出错了’)

      res.cc(err,0)

      })

      })

      }

      //登录

      exports.sign=(req,res)=>{

      const userinfo=req.body

      let usernanmSql=‘SELECT * FROM ev_users WHERE username=?’

      db.query(usernanmSql,userinfo.username,(err,results)=>{

      //判断用户

      if(err) return res.cc(err)

      if(results.length==0) return res.cc(‘用户名不存在’)

      //判断密码

      const comparResults= bcrypt.compareSync(userinfo.password,results[0].password)

      if(!comparResults)return res.cc(‘密码错误’)

      //生成token字符串

      const user={…results[0],password:‘’,user_pic:‘’}

      //加密

      const tokenStr=jwt.sign(user,config.jwtSecretKey,{expiresIn:‘10h’})

      res.send({

      status:0,

      message:‘登录成功’,

      token:'Bearer '+tokenStr

      })

      })

      }

      • 私有路由执行代码router-handler/userinfo.js

      //导入数据库模块

      const db =require(‘…/db/index’)

      //导入密码模块

      const bcrypt=require(‘bcryptjs’)

      //查询用户信息函数

      exports.getUserinfo=(req,res)=>{

      //定义字符串

      const sql=‘SELECT id,username,nickname,email,user_pic FROM ev_users WHERE id=?’

      //执行

      db.query(sql,req.user.id,(err,results)=>{

      if(err) return res.cc(err)

      if(results.length!==1) return res.cc(‘获取用户信息失败’)

      res.send({

      status:0,

      message:‘获取成功’,

      data:results[0]

      })

      })

      }

      //更新用户数据

      exports.updataUserinfo=(req,res)=>{

      //定义字符串

      const sql=‘UPDATE ev_users SET id=?,nickname=?,email=? WHERE id=?’

      //执行语句

      《MySql面试专题》

      全网火爆MySql 开源笔记,图文并茂易上手,阿里P8都说好

      全网火爆MySql 开源笔记,图文并茂易上手,阿里P8都说好

      《MySql性能优化的21个最佳实践》

      全网火爆MySql 开源笔记,图文并茂易上手,阿里P8都说好

      全网火爆MySql 开源笔记,图文并茂易上手,阿里P8都说好

      全网火爆MySql 开源笔记,图文并茂易上手,阿里P8都说好

      全网火爆MySql 开源笔记,图文并茂易上手,阿里P8都说好

      《MySQL高级知识笔记》

      全网火爆MySql 开源笔记,图文并茂易上手,阿里P8都说好

      全网火爆MySql 开源笔记,图文并茂易上手,阿里P8都说好

      全网火爆MySql 开源笔记,图文并茂易上手,阿里P8都说好

      全网火爆MySql 开源笔记,图文并茂易上手,阿里P8都说好

      全网火爆MySql 开源笔记,图文并茂易上手,阿里P8都说好

      全网火爆MySql 开源笔记,图文并茂易上手,阿里P8都说好

      全网火爆MySql 开源笔记,图文并茂易上手,阿里P8都说好

      全网火爆MySql 开源笔记,图文并茂易上手,阿里P8都说好

      全网火爆MySql 开源笔记,图文并茂易上手,阿里P8都说好

      全网火爆MySql 开源笔记,图文并茂易上手,阿里P8都说好

      文中展示的资料包括:**《MySql思维导图》《MySql核心笔记》《MySql调优笔记》《MySql面试专题》《MySql性能优化的21个最佳实践》《MySq高级知识笔记》**如下图

      全网火爆MySql 开源笔记,图文并茂易上手,阿里P8都说好

      关注我,点赞本文给更多有需要的人
      tus:0,

      message:‘获取成功’,

      data:results[0]

      })

      })

      }

      //更新用户数据

      exports.updataUserinfo=(req,res)=>{

      //定义字符串

      const sql=‘UPDATE ev_users SET id=?,nickname=?,email=? WHERE id=?’

      //执行语句

      《MySql面试专题》

      [外链图片转存中…(img-T05pz2DJ-1719893937237)]

      [外链图片转存中…(img-mfvwPEMQ-1719893937238)]

      《MySql性能优化的21个最佳实践》

      [外链图片转存中…(img-9AG0bp2s-1719893937238)]

      [外链图片转存中…(img-PCR2wl7y-1719893937239)]

      [外链图片转存中…(img-qpyCkBVR-1719893937239)]

      [外链图片转存中…(img-hIWJgWPQ-1719893937240)]

      《MySQL高级知识笔记》

      [外链图片转存中…(img-4iG2zh5z-1719893937240)]

      [外链图片转存中…(img-qEPkJZsN-1719893937241)]

      [外链图片转存中…(img-LCyCDDiC-1719893937241)]

      [外链图片转存中…(img-nwHPRMRC-1719893937241)]

      [外链图片转存中…(img-dyWKzGVX-1719893937242)]

      [外链图片转存中…(img-xgsKJLTX-1719893937242)]

      [外链图片转存中…(img-XWuRhfcM-1719893937242)]

      [外链图片转存中…(img-18iuTa45-1719893937243)]

      [外链图片转存中…(img-gwHvXqbD-1719893937243)]

      [外链图片转存中…(img-RfrLa7jx-1719893937243)]

      文中展示的资料包括:**《MySql思维导图》《MySql核心笔记》《MySql调优笔记》《MySql面试专题》《MySql性能优化的21个最佳实践》《MySq高级知识笔记》**如下图

      [外链图片转存中…(img-4hLVjAo7-1719893937244)]

      关注我,点赞本文给更多有需要的人

    转载请注明出处或者链接地址:https://www.qianduange.cn//article/14501.html
    标签
    评论
    发布的文章

    Unity数据持久化之Json

    2024-08-10 22:08:00

    simdjson 高性能JSON解析C 库

    2024-08-10 22:08:00

    npm常用命令详解(一)

    2024-08-10 22:08:34

    大家推荐的文章
    会员中心 联系我 留言建议 回顶部
    复制成功!