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

做网站外快网站建站哪个好

做网站外快,网站建站哪个好,蓝色旅游网站模板,丹东 建设集团 招聘信息网站如何处理MySQL的错误 MySQL的错误信息#xff0c;可以通过err来获取。这是没有问题的。 但是#xff0c;我们加入了Promise#xff0c;Promise中的错误#xff0c;在外部是获取不到的#xff0c;只能使用Promise相关方法来获取错误信息。 解决方法一 使用 JS原生的 tr…如何处理MySQL的错误 MySQL的错误信息可以通过err来获取。这是没有问题的。 但是我们加入了PromisePromise中的错误在外部是获取不到的只能使用Promise相关方法来获取错误信息。 解决方法一 使用 JS原生的 try … catch … try {let r await db(insert into user set ?, req.body);res.json({status: 0,message: 注册成功}); } catch (err) {console.log(err.message); // 输出这个信息是为了程序员排错res.json({status: 1,message: 注册失败}); }解决方法二 使用Promise的catch方法 let r await db(inssert into user set ?, req.body).catch(err {console.log(err.message); }); console.log(r); // 如果有错误rundefined。否则r是一个数组或对象 if (r) {res.json({status: 0,message: 注册成功}); } else {res.json({status: 1,message: 注册失败}); }解决方法三 在封装的db中使用catch方法 /*** db.js */ .... .... .... // 下面是修改的部分 return new Promise((resolve, reject) {conn.connect();conn.query(sql, params, (err, result) {err ? reject(err) : resolve(result);});conn.end();}).catch(err {console.log(err.message);});上述做法的可行性分析 后续还是直接使用db方法即可。比如注册 let r await db(insert into user set ?, req.body);// console.log(r); // 如果有错误rundefined。否则r是一个数组或对象 if (r) {res.json({status: 0,message: 注册成功}); } else {res.json({status: 1,message: 注册失败}); }解决登陆账号不能重复的问题 首先需要把重复的账号删除掉 第二添加唯一索引 添加唯一索引之后username字段的值不允许重复了。 如果再次添加重复的账号则会报 Duplicate entry admin for key username 完成登录接口 思路 执行查询SQL语句使用账号密码当做条件。如果能够查询到结果表示账号密码正确。 // 登录的接口 router.post(/login, async (req, res) {// 假设账号是 admin密码是 111111// 判断账号密码是否正确。// if (req.body.username admin req.body.password 111111) {let r await db(select * from user where username? and password?, [req.body.username, req.body.password]);// 如果账号密码正确r是一个非空数组如果错误是一个空数组// console.log(r);if (r r.length 0) {// 登录成功res.json({status: 0,message: 登录成功,// token: Bearer jwt.sign(要保存的信息, 秘钥, 配置项)// 生成的token前面必须有Bearer还有一个空格。否则一会token不能正常的解密token: Bearer jwt.sign({ username: hahaha, age: 21 }, bigevent-9760, { expiresIn: 1h })});} else {res.json({status: 1,message: 登录失败});}// } });密码使用md5加密 修改user表 我们一会使用md5加密md5加密后的字符串长度始终是 32位所以修改user表中的 password字段为char类型长度为32 图片的大小类型可以设置为 longtext //---------------------------------------------------------------------------------------- 更改头像的时候如果提示 ”Data too long for column ‘user_pic’ at row 1“说明你的base64太大了而text类型只能存 65535个字符。 解决办法一使用一个小图片从新生成base64格式 解决办法二把数据表中的 user_pic 设置为 longtext 类型可存42亿个字符或 mediumtext 可存 1600万个字符 使用 utility 第三方模块对密码进行加密 下载安装 utilitylogin.js 中加载模块注册的时候使用 utility.md5(req.body.password) 对密码进行加密 获取用户信息 登录成功在token中存放正确的username或者id /** login.js */ // 登录成功之后token中要保存 username 或者 id res.json({status: 0,message: 登录成功,// token: Bearer jwt.sign(要保存的信息, 秘钥, 配置项)// 生成的token前面必须有Bearer还有一个空格。否则一会token不能正常的解密token: Bearer jwt.sign({ username: req.body.username, id: r[0].id }, bigevent-9760, { expiresIn: 1h }) });获取用户信息接口 /***** user.js */ // 获取用户信息 router.get(/userinfo, async (req, res) {// 查询条件可以使用username也可以使用idlet r await db(select * from user where username?, req.user.username);// console.log(r);if (r r.length 0) {res.json({status: 0,message: 获取用户基本信息成功,data: r[0]});} else {res.json({status: 1,message: 获取用户信息失败});} });回顾如何获取客户端携带的请求参数 请求方式参数类型服务端如何获取谁控制的POST查询字符串req.bodyapp.use(express.urlencoded({extended: false}))POSTFormDatareq.body/req.filemulter中间件目前没学呢GET查询字符串req.queryexpress 封装的属性GET动态参数req.paramsexpress 封装的属性GET/POSTtokenreq.userexpress-jwt 中间件控制的服务端获取到的数据都是对象类型 更新密码接口 判断原密码和新密码是否相同查询一下原密码是否正确更新密码 /***** user.js */ // 重置密码 router.post(/updatepwd, async (req, res) {// 判断两次密码是否一致if (req.body.oldPwd req.body.newPwd) {return res.json({status: 1,message: 新密码不能和原密码相同});}// 先根据用户名和原来的密码查询。如果查询到信息说明原密码正确是本人操作let a await db(select * from user where username? and password?, [req.user.username, utility.md5(req.body.oldPwd)]);if (a undefined || a.length 0) {// 说明没有查到信息说明原密码不对不是本人操作return res.json({status: 1,message: 原密码不对});}// 原密码正确而且新密码和原密码也不一样下面进行更新操作let arr [utility.md5(req.body.newPwd), req.user.username];let r await db(update user set password? where username?, arr);if (r r.affectedRows 0) {res.json({status: 0,message: 更新密码成功});} else {res.json({status: 1,message: 更新密码失败});} });更换头像接口 需要自己生成一个base64格式的字符串用于测试 https://www.css-js.com/tools/base64.html // 更换头像 router.post(/update/avatar, async (req, res) {let arr [req.body.avatar,req.user.username];let r await db(update user set user_pic? where username?, arr);if (r r.affectedRows 0) {res.json({status: 0,message: 更新头像成功});} else {res.json({status: 1,message: 更新头像失败});} });文章类别 设置文章分类表 获取文章分类列表 // ### 获取文章分类列表 router.get(/cates, async (req, res) {let r await db(select * from category);// 只要查询到了哪怕是空数组也做出响应if (r) {res.json({status: 0, message: 获取分类成功,data: r});} else {res.json({status: 1,message: 获取分类失败});} });新增文章分类 // ### 新增文章分类 router.post(/addcates, async (req, res) {let r await db(insert into category set ?, req.body);if (r r.affectedRows 0) {res.json({status: 0,message: 添加分类成功})} else {res.json({status: 1,message: 添加分类失败})} });根据Id删除文章分类 前端渲染 category.html 的时候使用的是 {{val.Id}} 修改办法1打开前端的 /article/category.html 把模板中的id修改成 {{val.id}}修改办法2修改数据库的字段老师用的这个办法 // ### 根据Id删除文章分类 router.get(/deletecate/:id, async (req, res) {// 获取idlet id req.params.id; // 获取动态参数idlet r await db(delete from category where id?, id);if (r r.affectedRows 0) {res.json({status: 0,message: 删除分类成功})} else {res.json({status: 1,message: 删除分类失败})} });根据Id获取文章分类数据 这个接口没有用到所以不写了 根据Id更新文章分类数据 SQL语句中有两个 ? 所以需要传递一个数组SQL中第一个 表示 “字段值,…”所以需要为其传递一个对象SQL中第二个 表示 Id需要使用 req.body.Id 来获取Id因为客户端使用的就是大写的 Id // ### 根据Id更新文章分类数据 router.post(/updatecate, async (req, res) {console.log(req.body);let params [{name: req.body.name,alias: req.body.alias},req.body.Id // 这里必须是大写的Id否则不能接受到客户端提交的Id];let r await db(update category set ? where Id?, params);if (r r.affectedRows 0) {res.json({status: 0,message: 修改分类成功})} else {res.json({status: 1,message: 修改分类失败})} });
http://www.pierceye.com/news/484010/

相关文章:

  • 上海h5网站开发网站建设在开封找谁做
  • 滨海建设局官方网站营销网络平台
  • 中国小康建设网是骗子网站吗?建设宁波市分行的互联网网站
  • 制造网站建设自己做游戏资讯网站
  • 网站建设质量如何衡量都江堰网站开发
  • 企业网站设计步骤中山制作网站的公司
  • 通化网站制作企信网官网查询入口
  • 无锡装修网站百科网站推广
  • 先做网站后付款怎么做网站弹窗通知
  • php做网站的分站学校网站开发价格
  • 静态动漫网站模板个人网站空间大小
  • 个人网站 如何做推广拓者设计吧官方网站
  • 农产品电子商务网站建设要求开发一款app软件需要多少钱
  • 仿微博网站模板织梦网站地图怎么做xml
  • 什么网站能买建设摩托车产品推广计划方案
  • 建设局网站买卖合同大连 商城网站制作公司
  • 网站开发实训意义湖州网站设计
  • 网站后台设置企业为什么要网站建设
  • 外贸网站推广平台有哪些怎么在亚马逊上开店铺
  • 网站模板下载简单的那种哪个网站可以做结婚请柬
  • 自建网站迁移wordpress 电影下载站
  • 深圳定制网站建设服务公司友情连接
  • 网络设计工资多少杭州seo网站排名优化
  • 免费空间申请网站网站开发技术联系方式
  • 增加访客的网站做网站 套用模板之后用什么改
  • 徐州企业网站排名优化建网站用什么浏览器
  • 大型网站频道的建设需多人协同开发网站建设产品中心
  • 学校网站建设状况好的建设网站
  • 庐江住房建设局网站做外汇关注的网站
  • 重庆市建设工程造价管理总站东莞网站包年优化