如何使用express-validator在单独的文件中实现验证

2023-11-23

我正在尝试使用express-validator 来验证req.body,然后再发送post 请求以将数据插入postgres。

我有一个路由文件、控制器文件,我想在名为 validate.js 的文件中进行验证。同时,我已经安装了express-validator,并在我的server.js 中导入了它。我遇到的其他资源似乎在包含插入数据逻辑的函数中实现了验证。

//server.js
....
import expressValidator from 'express-validator';

...
app.use(bodyParser.urlencoded({ extended: false }));
app.use(expressValidator);

//route.js
import express from 'express';
import usersController from './controller';

const router = express.Router();

router.post('/createuser', usersController.createUser);

//controller.js
createUser(req, res){
  // ...
  const { firstName, lastName, email, password } = req.body;
  //code to insert user details to the database
}

//validator.js
import { check } from 'express-validator/check';

module.exports = [check('email').isEmail()];

我希望在名为 validator.js 的文件中实现验证,例如在插入数据库之前验证电子邮件


我有同样的方法,除了一件事是我们不应该在控制器中处理验证错误。因此,如果验证层发生任何错误,它应该只从那里返回。我们不应该允许我们的控制流进入控制器层。下面是代码示例:

使用路由.js

const route = express.Router();

const {
  **validateUser**,
} = require('../middlewares/validators/userValidator');

route.route('/').post(**validateUser**, createUser);
route.route('/:id').put(**validateUser**, updateUser);

module.exports = route;

用户验证器.js

const {check, validationResult} = require('express-validator');

exports.validateUser = [
  check('name')
    .trim()
    .escape()
    .not()
    .isEmpty()
    .withMessage('User name can not be empty!')
    .bail()
    .isLength({min: 3})
    .withMessage('Minimum 3 characters required!')
    .bail(),
  check('email')
    .trim()
    .normalizeEmail()
    .not()
    .isEmpty()
    .withMessage('Invalid email address!')
    .bail(),
  (req, res, next) => {
    const errors = validationResult(req);
    if (!errors.isEmpty())
      return res.status(422).json({errors: errors.array()});
    next();
  },
];

控制器.js

/**
 * @desc    - create new User
 * @method  - POST
 */
exports.createCategory = async (req, res) => {
  //  do your stuff here. (No need to check any validation error here)
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用express-validator在单独的文件中实现验证 的相关文章

  • Nodejs Express中间件函数返回值

    我正在使用 NodeJS 和 Express 我有以下路线 中间件功能是Mobile 如果我不使用 return next 在 isMobile 函数中 应用程序会卡住 因为 NodeJS 不会移至下一个函数 但我需要 isMobile 函
  • 通过 node-http-proxy 保留基于 cookie 的会话

    我有一个简单的基于 Express 的 Node js Web 服务器 用于开发 JavaScript 应用程序 我将服务器设置为使用 node http proxy 来代理应用程序向在不同域和端口上运行的 Jetty 服务器发出的 API
  • 将音频与视频流合并 Node.js

    我正在创建 YouTube 视频下载器并且正在使用ytdl core库 它无法下载带有音频的高质量视频 因为 youtube 将其放在另一个文件中 但我需要将其全部下载到一个文件中 我已经这样做了 app get download asyn
  • 使用 enctype="multipart/form-data" 时出现 CSRF 错误

    每当我将 enctype multipart form data 添加到我的 html 表单中时 我得到ForbiddenError invalid csrf token 如果我删除 enctype 它就可以工作 我发送的 csrf 代码如
  • 添加元数据到快速路线

    有什么方法可以将元数据添加到 Express 的路线中吗 例如 app get some route function req res some meta data 我正在寻找一种针对我的节点应用程序的 AOP 方法 因此我想通过身份验证和
  • 节点应用程序之间共享会话?

    我目前有两个独立的节点应用程序在两个不同的端口上运行 但共享相同的后端数据存储 我需要在两个应用程序之间共享用户会话 以便当用户通过一个应用程序登录时 他们的会话可用 并且他们似乎已登录到另一个应用程序 在本例中 它是一个面向公众的网站和一
  • model.save() 返回无效输出

    我正在使用本文中的 Node js mongodb 和express 对 REST Api 进行简单测试 MERN 第一部分 使用 Node js 和 Express 构建 RESTful API https medium com week
  • Node.js req.body 在表单数据内容类型中未定义

    在这里 我为这个表单数据传递 API 创建了一个小演示 现在我正在使用邮递员检查此 API 但我没有收到任何数据 Code const http require http const express require express cons
  • MongoDB req.body 问题

    我有一个非常简单的 Mongo 设置 如下所示 这非常适合从输入字段获取数据并保存数据 一切都在工作 我的问题 我将如何循环遍历前端的 jobs 变量并设置数据 以便它适用于我的模型 不知何故 我需要将其输入到输入中 以便我可以 req b
  • NodeJS Express 中每个请求的全局范围

    我有一个基本的快速服务器 需要在每个请求处理期间存储一些全局变量 更深入地说 请求处理涉及许多需要存储在变量中的操作 例如global transaction 当然 如果我使用global范围 每个连接都将共享其事务的信息 并且我需要一个全
  • 降低 Nodejs 服务器上的 CPU 利用率

    我正在研究降低 CPU 利用率的有趣方法 在 NodeJS 服务器上 在我的研究过程中 我发现了以下文章 http engineering linkedin com nodejs blazing fast nodejs 10 perform
  • 错误:由于 MIME 类型(“text/html”)不匹配而被阻止(X-Content-Type-Options:nosniff)

    我正在尝试使用express和ajax通过测试站点测试一些api调用 但是如果我将js脚本分离到它自己的文件中 则会出现以下错误 资源来自 http localhost 9000 userProfileFunctions js http l
  • Node.js + Express.js |尝试设置 HTTPS 服务器

    我正在尝试使用 Node js 和 Express js 设置 HTTPS 服务器 我目前正在尝试 const filesystem require fs const express require express const server
  • 使用 process.on('uncaughtException 显示 500 错误页面

    我正在开发一个快速应用程序 我的 server js 目前有以下内容 process on uncaughtException function err console log UNCAUGHT EXCEPTION console log
  • express.js 示例应用程序[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在启动一个express js 项目 我想查看现有大型应用程序的代码 尤其是它们的文件系统结构 有
  • 如何修复语法错误:无法在模块外部使用 import 语句?

    我对这一切都很陌生 我正在尝试将 Node Typescript 后端添加到我的 Angular 项目中 但是导入express后总是报错 ERROR SyntaxError Cannot use import statement outs
  • 如何在 Sails.js 中嵌入和编写 mongo 对象(超过一层深度)?

    从 sails js 示例来看 Person js var Person attributes firstName STRING lastName STRING age type INTEGER max 150 required true
  • 对于单主机 Node.js 生产应用程序来说,什么是好的会话存储? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 Locked 这个问题及其答案是locked help locked posts因为这个问题是题外话
  • 在 Express.js 中使用相同的响应对象发送多个响应(res.json)

    res json Object assign cart generateArray res json JSON stringify cart totalPrice 我如何发送发送多个响应 因为我的代码不起作用 谢谢 您不能发送多个回复 您发
  • Socket.io、集群、快速和同步事件

    1周以来我遇到了一个大问题 我尝试将实际在单核上运行的 node JS 项目转换为具有集群的多核 对于 websockets 目前 我对事件没有任何问题 但是 对于 xhr polling 或 jsonp polling 我在集群模式下使用

随机推荐

  • 如何将 3 个 UIButtons 对齐到 UITableCellView 的中心?

    我怎样才能对齐3UIButtons 到 a 的中心UITableCellView 例如说我有 3UIButtons 的标题 Email Phone Skype 其中一项或多项是可能的UIButtons 被隐藏 例如 如果电话UIButton
  • 基于 Zend_Framework 的应用程序示例 [已关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 您知道有哪些基于 Zend
  • Python 中的对象引用是什么?

    一本Python入门教科书对 对象引用 的定义如下 但我不明白 对象引用只不过是对象身份 存储对象的内存地址 的具体表示 教科书尝试通过使用箭头将对象引用显示为来自变量的某种关系来说明这一点a到一个物体1234在赋值语句中a 1234 从我
  • 如何对同步代码进行单元测试

    我是 Java 和 junit 的新手 我有以下一段代码想要测试 如果您能发送有关测试它的最佳方法的想法 我将不胜感激 基本上 以下代码是关于从集群中选举领导者的 领导者持有共享缓存上的锁 如果领导者以某种方式失去了缓存上的锁 则领导者的服
  • 警告:GDB:无法设置控制终端:不允许操作

    当我尝试使用 gdb 和 Netbeans IDE 调试 C C 程序时 出现此错误 此问题的标题 有谁知道这意味着什么以及如何摆脱警告 尽管有警告 我仍然可以进行调试 但我仍然想让警告消失 相关详情 操作系统 Ubuntu 9 10 gd
  • 使用对象标签将 PDF 文件嵌入到 html 中

    我正在将 pdf 文档嵌入到我的 html 代码中 为此我写了这段代码
  • Mongoose 异步模式验证不起作用

    我有以下代码来验证我的 时区 字段 orgSchema path timezone validate function value return Timezone findOne id value id function err timez
  • 将本地文件从客户端加载到dask分布式集群上

    这是一个初学者问题 但我无法找到相关的答案 基本上 我的有关 7GB 的数据位于我的本地计算机上 我有在本地网络上运行的分布式集群 我怎样才能把这个文件放到集群上 通常的 dd read csv 或 read parquet 会失败 因为工
  • 使用或不使用 dict.keys() 访问 Python 字典键

    通常我访问dict键使用keys method d a 1 b 2 c 3 for k in d keys print k 但有时我会看到这样的代码 for k in d print k 这段代码正确吗 安全的 回答你明确的问题 是的 它是
  • 如何在 Android 中的标签栏中居中对齐文本

    我只想在选项卡栏中放置文本 而不放置图像 我想将文本在选项卡栏中水平和垂直居中 正好在中心 如果有人仍然对简单的解决方案感兴趣而不创建自己的布局和样式 对每个添加的选项卡使用 android widget TabHost TabSpec s
  • 在 Grails 中创建管理部分的最佳方法

    Hy 我想知道在 Grails 应用程序中创建管理 后端 部分的最佳方法是什么 我想在 Grails 的 controllers 文件夹中创建一个 Admin 文件夹来放置我所有的管理控制器 但是我是否必须为每个管理控制器手动创建 URL
  • 如何使用 com.google.gwt.user.datepicker.client.DateBox 限制可用日期范围

    我需要限制什么Dates用户可以从com google gwt user datepicker client DateBox 我似乎不知道如何限制最小Date所以他们无法选择过去的日期 如果我不能这样做com google gwt user
  • 如何在 Swift 中为随机数生成器播种?

    我的应用程序使用随机数 我想为随机数生成器提供种子 以便每次都不会相同 我该怎么做呢 EDIT 我应该给 srand 提供什么参数来用当前时间为随机生成器提供种子 这有效 let time UInt32 NSDate timeInterva
  • Spring Boot - 仅在属性启用时才加载 bean

    我有一个Spring Boot应用程序具有不同的子模块 其中还包含弹簧组件 在主 Web 模块中 我使用了子模块中 70 的 Bean 属性组 指向 bean 是否启用取决于 application yml 属性 首先 我想创建 Aspec
  • Flutter 应用程序体积太大

    我在使用 java 开发 Android 应用程序方面拥有丰富的经验 最近我开始了解flutter 所以 我尝试基于官方的flutter创建一个简单的android应用程序tutorial 但令人惊讶的是 调试应用程序大小为 25MB 而发
  • React 组件层次结构中的 componentDidMount 顺序

    我有一个具有以下结构的 React 应用程序 成分A由 组成B and C 当组件B称其为componentDidMount方法 是不是所有元件都安装完成了 或者换句话说React 会起火吗componentDidMount树中的所有组件都
  • 批处理文件压缩子目录

    我正在尝试编写一个批处理脚本 该脚本将使用 winrar 或 7 zip 自动运行压缩子目录 Example My Pictures Pics1 Pics1 zip File1 jpg File2 jpg File3 jpg Pics2 P
  • 如何连接 TFS 并获取特定用户的项目列表

    public List
  • 如何限制Rails路由文件中的资源格式

    在 Rails 中路由资源时 可选格式属性会自动附加到生成的路由中 这样一来 所讨论的资源就可以以 XML HTML 等形式请求 实际允许的格式通常在控制器中描述为respond to 但在很多情况下 您只想支持 HTML 而编写起来感觉像
  • 如何使用express-validator在单独的文件中实现验证

    我正在尝试使用express validator 来验证req body 然后再发送post 请求以将数据插入postgres 我有一个路由文件 控制器文件 我想在名为 validate js 的文件中进行验证 同时 我已经安装了expre