node中间件

Posted xiaoliziaaa

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了node中间件相关的知识,希望对你有一定的参考价值。

npm i body-parser

post 请求主题中间件

const bodyParser = require(‘body-parser‘)

 
const bodyParser = require(‘body-parser‘)

// 创建 application/json 解析
 const jsonParser = bodyParser.json()
 app.use(jsonParser)

 

express-validator 表单校验中间件

技术图片
const { body } = require(‘express-validator‘);
const UserModel = require(‘../model/User‘)
const bcrypt = require(‘bcrypt‘)

/**
 * 用户注册数据校验
 * 
 */
exports.addUserValidate = [
  // name 不为空 string
  body(‘name‘).notEmpty().isString().withMessage(‘name字段不能为空且必须是string类型‘), //withMessage配置可有可无
  // password 不为空 string
  body(‘password‘).notEmpty().isString().withMessage(‘password字段不能为空格且必须是string类型‘),
  // 年龄数字 不为空 0<=age<=100
  body(‘age‘).notEmpty().isInt(), //isInt number类型验证失效 
  // userId字段数据数据库唯一 不为空 且为string 
  body(‘userId‘).notEmpty().isString().custom(value => {
    return UserModel.findOne({ userId: value }).then(user => {
      if (user) {
        return Promise.reject(‘userId 已存在‘);
      }
    });
  })

]

/**
 * 用户登录数据校验
 * 
 */
let currentUser = null //用于保存当前
exports.userLoginValidate = [

  body(‘userId‘).notEmpty().isString().custom(value => {
    return UserModel.findOne({ userId: value }).select(‘+password‘).then(user => {
      // 判断用户是否存在
      if (!user) {
        return Promise.reject(‘该用户id尚未注册‘);
      }
      currentUser = user


    });
  }),

  body(‘password‘).notEmpty().isString().custom(async value => {

    const match = await bcrypt.compare(value, currentUser.password); // 明文 ,加密密码
    if (!match) return Promise.reject(‘秘密输入有误,请再输入一次‘);

  }),


]
View Code

 

bcrypt密码加密解密中间件

body.password = await bcrypt.hash(body.password, 10) // 密码加密
const match = await bcrypt.compare(value, currentUser.password); // 明文 ,加密密码
 
 

以上是关于node中间件的主要内容,如果未能解决你的问题,请参考以下文章

Express实战 - 应用案例- realworld-API - 路由设计 - mongoose - 数据验证 - 密码加密 - 登录接口 - 身份认证 - token - 增删改查API(代码片段

Spring Rest 文档。片段生成时 UTF-8 中间字节无效 [重复]

vscode代码片段建议bug

澄清 node.js + promises 片段

node 片段

Sublime Text3自定义代码片段