2.2新增用户

1. 为用户列表页面的新增用户按钮添加链接

2. 添加一个连接对应的路由,在路由处理函数中渲染新增用户模板

3 .为新增用户表单指定请求地址、请求方式、为表单项添加name属性

4. 增加实现添加用户的功能路由

登录后点击新增用户→提交

5. 接收到客户端传递过来的请求参数

6. 对请求参数的格式进行验证

使用第三方模块Joi

Joi

JavaScript对象的规则描述语言和验证器。

报错信息:TypeError: Joi.Validate is not a function

解决方式:https://www.cnblogs.com/aimilu/p/13455783.html

user-edit-fn.js:

//引入joi模块const e = require('express');const Joi = require('joi');module.exports = async(req, res) => {//定义对象的验证规则const schema = {username: Joi.string().min(2).max(12).required().error(new Error('用户名不符合验证规则')),email: Joi.string().email().required().error(new Error('用户名不符合验证规则')),password: Joi.string().regex(/^[a-zA-Z0-9]{3,30}$/).required().error(new Error('密码格式不符合要求')),role: Joi.string().valid('normal', 'admin').required().error(new Error('角色值非法')),state: Joi.number().valid(0, 1).required().error(new Error('状态值非法'))};try {//实施验证await Joi.validate(req.body, schema);} catch (e) {//验证没有通过// e.message//重定向回用户添加页面res.redirect('/admin/user-edit?message=${e.message}');}res.send(req.body);}

7. 验证当前要注册的邮箱地址是否已经注册过

8. 对密码进行加密处理

9. 将用户信息添加到数据库中

10. 重定向页面到用户列表页面

优化代码:

(1)将验证代码从路由模块抽离到model的用户模块

验证网页功能是否正常运行

(2)优化验证错误重定向代码

优化:

验证网页功能是否正常运行

11.将用户信息展示在页面当中:

成功登录后

(下面*操作只是为了方便查看数据,可以不弄)

***********************************************************************************

输入chrome://flags/#extensions-on-chrome-urls

重新打开谷歌浏览器

把json formatter.crx文件拖动进去即可安装插件

***********************************************************************************

(上面*操作只是为了方便查看数据,可以不弄)

黑马博客——详细步骤(三)项目功能的实现之新增用户相关推荐

  1. 黑马博客——详细步骤(二)项目功能的实现之登录功能

    2. 项目功能实现 2.1 登录 1. 创建用户集合,初始化用户               1.    连接数据库               2.    创建用户集合               ...

  2. 黑马博客——详细步骤(五)项目功能的实现之用户信息修改

    2.4 用户信息修改 1. 将要修改的用户ID传递到服务器端(作用:区分添加用户功能还是修改用户功能) 2. 建立用户信息修改功能对应的路由 点击修改按钮 能看到用户信息 点击修改按钮 解决方式: 其 ...

  3. 黑马博客——详细步骤(十)项目功能的实现之开发环境与生产环境

    6. 开发环境与生产环境 如何区分开发环境与生产环境 通过电脑操作系统中的系统环境变量区分当前是开发环境还是生产环境. 电脑→属性 对开发环境和生产环境进行不同的操作: 开发环境中把客户端的请求信息打 ...

  4. 黑马博客——详细步骤(九)项目功能的实现之mongoDB数据库添加账号

    5. mongoDB数据库添加账号 1. 以系统管理员的方式运行powershell 2. 连接数据库 mongo 3. 查看数据库 show dbs 4. 切换到admin数据库 use admin ...

  5. 黑马博客——详细步骤(七)项目功能的实现之文章管理

    3.文章管理 1.添加文章管理和文章编辑页面路由: 验证两个静态页面能否被访问 2.实现点击切换导航栏功能: 3.更改连接的选中状态 实现文章管理功能:(基于数据库) 创建文章集合->添加文章具 ...

  6. 黑马博客——详细步骤(六)项目功能的实现之用户信息删除

    2.5 用户信息删除 1. 在确认删除框中添加隐藏域用以存储要删除用户的ID值 2. 为删除按钮添自定义属性用以存储要删除用户的ID值 3. 为删除按钮添加点击事件,在点击事件处理函数中获取自定义属性 ...

  7. 黑马博客——详细步骤(四)项目功能的实现之数据分页

    2.3 数据分页 当数据库中的数据非常多是,数据需要分批次显示,这时就需要用到数据分页功能. 分页功能核心要素: 当前页,用户通过点击上一页或者下一页或者页码产生,客户端通过get参数方式传递到服务器 ...

  8. 黑马博客——详细步骤(八)项目功能的实现之另一种分页方式【mongoose-sex-page】

    4.另一种分页方式:mongoose-sex-page(第三方模块) 上一页和下一页

  9. 黑马博客——详细步骤(十二)项目功能的实现之文章评论和退出功能

    8.文章评论 1. 创建评论集合 2. 判断用户是否登录,如果用户登录,再允许用户提交评论表单 3. 在服务器端创建文章评论功能对应的路由 4. 在路由请求处理函数中接收客户端传递过来的评论信息 5. ...

最新文章

  1. 600度近视眼恢复方法_近视眼了怎么办?试试这几种方法,或许能奏效
  2. SAP 往一个角色里增加事务代码
  3. 《排序算法系列一、简单选择排序》
  4. Android Jetpack组件之ViewModel使用
  5. 第二十二章:动画(十五)
  6. Windows Phone开发基础(11)实现一个RSS阅读器
  7. 此安装程序必须使用 java 开发工具包 (jdk) 执行_彻底搞懂Java开发工具包(JDK)安装及环境变量配置...
  8. 5天学习MYSQL数据库第一天剩余全部笔记(超级详细的mysql入门笔记适合新手反复看加深记忆)
  9. CMOS图像传感器——工作原理
  10. streaming api_通过Spring Integration消费Twitter Streaming API
  11. android studio黄油刀依赖,如何在Android Studio中设置ButterKnife插件?
  12. spring中用到的9种设计模式
  13. 一大波人气博主袭来,现场直播华为全联接2020!
  14. python map lambda 分割字符串_[转] Python特殊语法:filter、map、reduce、lambda
  15. Django - 补充目录
  16. 拓端tecdat|R语言Lee-Carter模型对年死亡率建模预测期望寿命
  17. 为什么你的种子磁力下载很慢?
  18. otg模拟器_全能模拟器 RetroArch 安卓版上手教程
  19. html/css表单美化
  20. 有限元分析基本理论问答

热门文章

  1. Struts2的struts.xml的配置细节,OGNL,标签
  2. 用链表队列实现基数排序;
  3. ADO.NET数据集的工作原理(DataSet)
  4. mfc mfc100ud.dll丢失问题
  5. prototype中的$H函数的用法
  6. 剑指 Offer II 110. 所有路径
  7. SpringBoot+Redis+Cookies实现高并发的购物车
  8. 为什么ctrl+shift+方向键不管用了_键盘侠丨Shift键的快捷运用
  9. 在计算机中添加用户名和密码是多少,在win7系统中添加网络打印机提示输入用户名和密码的解决方案...
  10. 计算机通信基础ppt,计算机网络第2章 数据通信基础知识要点课件.ppt