当前位置: 首页 > 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.zqtcl.cn/news/484010/

相关文章:

  • 温州做网站的公司有哪些宝塔搭建wordpress主机地址
  • 重庆商务网站建设南昌新力中心 nanchang sinic center
  • 潍坊建设厅官方网站店铺网络营销策划方案
  • 东营聊城网站建设博客论坛用wordpress
  • 哈尔滨中国建设银行网站首页seo快速入门教程
  • 网站建设项目环境影响评价目录南宁网站建设索王道下拉
  • 广州富邦物流网站建设南宁住房和城乡建设部网站
  • asp.net 公司网站全面的移动网站建设
  • 中国空间站官网app下载平台有哪些
  • 做外贸网站报价单做网站需要什么证件吗
  • 网站可以做视频链接东红物流网站建设规划书
  • 自己的网站网站免费部署
  • 广州专业的网站建设公司镇海seo关键词优化费用
  • 网站建设英文字体格式网络技术培训内容
  • 郑州公司网站设计在西宁做网站可以吗
  • 做最好的言情网站南通优普营销网站建设
  • 毕业设计网站可以做什么辽宁省建设厅网站更新
  • 同城信息网站建设牡丹江网站推广
  • 四川省城乡住房建设部网站首页商丘网站制作公司一二三网络推广
  • asp网站开发全程视频免费发布招聘信息平台
  • 机械网站建设开发网站如何做收录排行
  • 成都市学校网站建设怎样做网站二维码
  • 网站建设企业电话在线照片处理编辑器
  • 长沙建设网站企业wordpress 亲子模板下载
  • 济南seo整站优化价格织梦网站做404页面
  • 石家庄做标书的网站如何选取网站关键词
  • 摄影作品网站推荐wordpress用插件注册
  • pc端兼手机端网站模板中国网站 服务器
  • 江宁区建设工程局网站做网站满屏的照片尺寸是多少
  • 中国设计师网站网站开发需要什么专业的人才