当前位置: 首页 > news >正文

ECMS做的网站/全渠道营销成功案例

ECMS做的网站,全渠道营销成功案例,哪个网站可以找做中厚板的公司,有哪些做的好的汽配零配件网站开发用户的基本信息接口获取用户信息 最终文件列表展示首先db/index.js下连接数据库mysql2增删改查用户的信息代码展示(文件之间内容穿插)1,注册并登录,拿到用户的token进行增删改查2,配置定义joi表单规则,…

开发用户的基本信息接口

      • 获取用户信息 最终文件列表展示
      • 首先db/index.js下连接数据库mysql2
      • 增删改查用户的信息代码展示(文件之间内容穿插)
      • 1,注册并登录,拿到用户的token进行增删改查
      • 2,配置定义joi表单规则,schema/user.js
      • 3,初始化路由模块,router/userinfo.js
      • 4,初始化路由处理函数模块,router_handler/userinfo.js
      • 5,app.js的启动服务器及导入(建议从项目实战(上)看起,否则看不懂哦!)
        • 跑一下!

获取用户信息 最终文件列表展示

在这里插入图片描述

首先db/index.js下连接数据库mysql2

// 1.导入mysql2模块
const mysql = require('mysql2')
// 2,建立与MySQL数据库的连接
const db = mysql.createPool({host: "127.0.0.1", //数据库的IP地址user: "root", //登录数据库的账号password: "xxxxxx", //登录数据库的密码database: "my_db_01", //指定要操作哪个数据库
})
//3.检测mysql模块是否正常工作 SELECT 1 无作用,只是测试
db.query('SELECT 1',(err, results) => {//err为报错信息if (err) return console.log(err)//res是成功的消息console.log(results) 
}) 
module.exports = db

增删改查用户的信息代码展示(文件之间内容穿插)

1,注册并登录,拿到用户的token进行增删改查

2,配置定义joi表单规则,schema/user.js

// 导入joi,定义表单规则
const joi = require("joi")
// 导入express-joi中间件,表单验证模块
const expressJoi = require("@escook/express-joi")const userSchema = {// 校验req.body的数据body: {id: joi.number().integer().min(1).required(),//测试的时候根据接口需要展示和隐藏+// 字符串,还必须字符和数字的组合,最小三位,最大12位,必传username: joi.string().alphanum().min(3).max(12).required(),// pattern指定正则表达式password: joi.string().pattern(/^[\S]{6,15}$/),//当前规则和paddword规则保持一致,但新旧密码不能一致,如果加concat用于合并 joi.not(joi.ref('password'))和password这两条验证规则repassword: joi.not(joi.ref('password')),// 邮箱规则email: joi.string().email().required()},// 校验req.query的数据query: {},// 校验req.params的数据params: {}
}
// 暴露所有注册的表单验证规则
exports.userSchema = userSchema// 或者,假设你要验证的是id,但你定义的是id1,就可以通过下面这个来
// const id1= joi.number().integer().min(1).required()
// exports.userSchema = {
//     body: {
//        id:id1,
//     }
// }

3,初始化路由模块,router/userinfo.js

// 用户基本信息模块
// 导入express
const express = require('express')// 创建路由对象
const router = express.Router()// 导入用户处理函数模块
const userhandler = require('../router_handler/userinfo')// 1.导入验证表单数据的中间件
const expressJoi = require("@escook/express-joi")// 2.导入需要验证的验证规则对象
const {userSchema} = require('../schema/user')// 获取用户信息
router.post('/getuserinfo',expressJoi(userSchema), userhandler.getuserinfo)// 修改用户信息
router.post('/setuserinfo',expressJoi(userSchema), userhandler.setuserinfo)// 重置用户密码
router.post('/updatepassword',expressJoi(userSchema), userhandler.updatepassword)module.exports = router

4,初始化路由处理函数模块,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) => {// 1.执行sql语句失败if (err) return res.cc(err)// 2.执行sql语句成功,但是查询到的数据条数不等于1if (results.length !== 1) return res.cc("获取用户信息失败")// 3,将用户信息响应给客户端 res.send({staus: 1,message: "获取用户信息成功",data: results[0]})})
}
// 修改用户信息接口
exports.setuserinfo = (req, res) => {const sql = "update ev_users set ? where id=?"db.query(sql, [req.body, req.user.id], (err, results) => {// 1.执行sql语句失败if (err) return res.cc(err)// 2.执行sql语句成功,但是查询到的数据条数不等于1if (results.affectedRows !== 1) return res.cc("修改用户信息失败")// 3,将用户信息响应给客户端 res.send({staus: 1,message: "修改用户信息成功",data: results[0]})})
}// 重置用户密码接口
exports.updatepassword = (req, res) => {// 根据id查询用户信息const sql = "select * from ev_users where id=?"console.log(req.user)db.query(sql, req.user.id, (err, results) => {// 1.执行sql语句失败if (err) return res.cc(err)// 2.执行sql语句成功,但是查询到的数据条数不等于1if (results.length !== 1) return res.cc("用户不存在")// 3,验证密码是否正确,拿客户端输入的密码和服务器的,密码比较const Result = bcrypt.compareSync(req.body.password, results[0].password)if (!Result) return res.cc("旧密码错误")// 4,对新密码进行加密,更新服务器的密码 const newPwd = bcrypt.hashSync(req.body.repassword, 10)const upsql = "update ev_users set password=? where id=?"db.query(upsql, [newPwd, req.body.id], (err1, results1) => {// 1.执行sql语句失败if (err1) return res.cc(err1)//2,res.affectedRows是影响的行数if (results1.affectedRows !== 1) {res.cc('密码重置失败')}res.cc('密码重置成功',1)})})
}

5,app.js的启动服务器及导入(建议从项目实战(上)看起,否则看不懂哦!)

// 导入express
const express = require('express')
// 创建express的服务器实例
const app = express()
// 启动服务器
app.listen(3007, () => {console.log("服务器启动:http://127.0.0.1:3007")
})// 配置cors跨域中间件
const cors = require("cors")
// 将cors注册为全局中间件
app.use(cors())// 配置解析表单数据的中间件,这个中间件只能解析application/x-www-form-urlencoded 格式的表单数据
app.use(express.urlencoded({extended: false
}))//响应数据的中间件,上游挂载,下游共享
app.use((req, res, next) => {// status=0是失败,status=1是成功,默认为0res.cc = (err, status = 0) => {res.send({status,// 判断err是错误对象还是字符串message: err instanceof Error ? err.message : err})}next()
})// 导入配置文件
const config = require('./config')
// 导入解析token的中间件
const expressJWT = require('express-jwt')
// 使用.unless可以指定哪些接口不需要toke身份验证
app.use(expressJWT({secret: config.jwtSecretKey
}).unless({path: [/^\/api\//]
}))// 导入并使用用户路由模块
const userRouter = require("./router/user")
// 导入用户信息模块
const userinfoRouter = require("./router/userinfo")
// 注册
app.use('/api', userRouter)
// 用户信息模块
app.use('/my', userinfoRouter)//全局错误中间件
const joi = require('joi')
app.use((err, req, res, next) => {// 捕获表单验证失败的报错if (err instanceof joi.ValidationError) return res.cc(err)// 捕获token解析失败的错误if (err.name === 'UnauthorizedError') return res.cc('身份验证失败')res.cc(err)next()
})

跑一下!

  • 由于上一篇的捕获token解析, path: [/^/api//],且没限制/my开头的,所以导致这回请求接口不传token会失败
  • 切记传token
  • 如果安装了nodemon,终端运行,nodemon .\app.js
    在这里插入图片描述
  • 加上就成功了!
    在这里插入图片描述
    在这里插入图片描述
http://www.lbrq.cn/news/1564183.html

相关文章:

  • SEO参与网站建设注意/网络营销推广活动
  • 网站插入视频代码/一键生成个人网站
  • 义乌市场官方网站/营销100个引流方案
  • ppt模板网站排行/seowhy培训
  • 自动优化网站建设咨询/seo实战培训费用
  • 网站策划预算怎么做/手机一键优化
  • 什么网站做b2b免费/近期时事新闻
  • 用织梦做外文网站/上海搜索引擎优化seo
  • 网站会员推广功能/跟我学seo从入门到精通
  • 网站建设找博网/网页开发用什么软件
  • 工厂网站建设/专业做网站
  • wordpress做管理网站吗/贵州二级站seo整站优化排名
  • 怎么在wordpress导航条下方加入文字广告链接/优化防控措施
  • 福州网站建设案例/内容企业推广
  • 淘宝店铺装修做代码的网站/优化关键词具体要怎么做
  • 网站建设公司+长春/最佳磁力吧cili8
  • 石家庄疫情不敢公布/搜索引擎优化与推广技术
  • 青岛外贸网站运营哪家好/山东网站建设
  • 科技企业网站模板/网站百度关键词排名软件
  • 做自媒体要知道的网站/seo专员是什么
  • php政府网站系统/靠谱seo外包定制
  • 西安建设网站的公司哪家好/企业如何建站
  • 做国外网站衣服码数要怎么写/百度权重是怎么来的
  • 公司建网站的步骤是什么/网站seo规划
  • jquery做背景的网站赏析/百度官网下载安装到桌面上
  • 政府网站建设包括什么/百度客户端下载
  • wordpress 医院模板下载/南京seo外包
  • 厦门网站建设外包/合肥网站制作
  • 山西省建设厅网站首页/网络推广和竞价怎么做
  • 女女做网站/线上网络平台推广
  • 训练大模型的前提:数据治理工程:从原始数据到高质量语料的系统化治理实践
  • Linux中的日志管理
  • 智能门锁:安全与便捷的现代家居入口
  • 入门概述(面试常问)
  • Windows批处理脚本自动合并当前目录下由You-get下载的未合并的音视频文件
  • Linux 软件编程:文件IO、目录IO、时间函数