【问题标题】:Where we put validation logic in nodeJs MVC?我们在 nodeJs MVC 中将验证逻辑放在哪里?
【发布时间】:2019-01-12 14:18:27
【问题描述】:

我把nodeJs app分成MVC架构 型号 控制器 服务 路由器 工具 日志 我的问题是我可以在服务层或控制器层中对 rest api 进行验证。我正在使用 express 模块,我想使用 express-validater 模块进行验证。哪种方法更好?

【问题讨论】:

    标签: node.js model-view-controller


    【解决方案1】:

    2020 年 6 月 26 日更新

    您可以在您的架构中添加另一个文件夹(validation)。此文件夹应包含验证中间件

    /validation/auth.js

    exports.signup = [
        check('email').isEmail(),
        (req, res, next) => {
            const errors = validationResult(req);
            if (!errors.isEmpty()) {
                return res.status(422).json({ errors: errors.array() });
            }
            else next();
        }
    ];
    
    // more middlewares 
    

    现在在您的 route 文件中,您可以在控制器层之前使用所需的验证中间件。

    const express = require('express');
    const { check } = require('express-validator/check');
    const validate = require('../validation/auth');
    const authController = require('../controllers/auth');
    
    const router = express.Router();
    
    router.post('/signup', validate.signup, authController.postSignup);
    
    module.exports = router;
     
    

    这样你就进入了控制器层,只有验证成功。

    【讨论】:

    • ...如果你有很多字段会放入路由?!
    【解决方案2】:

    我不了解每个人,但我通常将我的 http 验证信息保存在我的控制器所在的目录中。如果这是您的设置,我会将它们放在 items 目录中。

    - controllers/
       - items/
         - index.js
         - validations.js
    

    这是因为验证非常具体地与items 端点相关联。例如,我使用其他验证来插入数据存储。

    这样的东西应该会让它们更容易找到,并且不需要那么烦人,因为它们在同一个目录中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-10-19
      • 1970-01-01
      • 1970-01-01
      • 2012-01-22
      • 2016-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多