快速验证器".isEmpty()"不起作用



当我尝试运行我的应用程序时,我收到一个错误,指出不为空的文本框为空。

应用.js:https://pastebin.com/5pbVG7kq

index.hbs:https://pastebin.com/neVV4X78

编辑:

使用

express-validator,您需要使用 "notEmpty((" 函数而不是验证器的模块 "isEmpty((",该模块在 readme.md 中没有引用。我用一个空字符串尝试了它,没有发送参数,它在两种情况下都工作正常。

旧回复:

我在使用表达式验证器时遇到了同样的问题。我将问题提交给了 github 存储库,因此我们必须等待他们解决问题。

作为同时的解决方法,您可以直接使用验证器包的 isEmpty(( 函数。

var validator = require('validator');
validator.isEmpty(string) //returns true or false

另请注意,验证器只接受字符串值,并且它不会强制传递给它的变量,而不是 express-validator,因此您需要处理通过 req.body.param 获得的参数未发送的情况。

以下是已报告问题的链接:https://github.com/ctavan/express-validator/issues/336

希望这有帮助。

> 2019 Express-Validator6.2.0这是我现在使用的,它工作得很好

应用.js

const express = require('express');
const {createPost} = require('../controllers/post');
// Import check only form express-validator
const {check} = require('express-validator');
const router = express.Router();
router.post('/post',[
    // Title
    check('title').not().isEmpty().withMessage('Title is required.'),
    check('title').isLength({
        min:4,
        max:150
    }).withMessage('Title must be between 4 to 150 characters.'),
    check('body').not().isEmpty().withMessage('Body is required.'),
    check('body').isLength({
        min:4,
        max:2000
    }).withMessage('body must be between 4 to 2000 characters.')
],createPost)

** 文件夹 '../控制器/发布'**帖子.js

// Import validation result only from expres-validator
const {validationResult } = require('express-validator');
// Post model file with custom implementation. 
 const Post = require('../models/post');

exports.createPost = (req, res) => {
// Grab your validation errors here before making any CREATE operation to your database.
  const errors = validationResult(req);
 if (!errors.isEmpty()) {
    const firstError = errors.array().map(error => error.msg)[0];
    return res.status(400).json({ error: firstError });
  }
    const post = new Post({
        title: req.body.title,
        body: req.body.body
    });

// Now you can safely save your data after check passes.
    post.save()
    .then(result => {
        res.status(200).json({
           post: result
        })
    });
};

最新更新