postman Express验证器返回值:未定义的消息:'无效值'

lhcgjxsq  于 2022-11-23  发布在  Postman
关注(0)|答案(2)|浏览(146)

路线

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

const logControllers = require('../controllers/log-controllers');

const router = express.Router();

router.post('/',
    [
      check('title')
         .not()
         .isEmpty()
    ],
    logControllers.createLogEntry
);

日志控制器

const uuid = require('uuid/v4');
const { validationResult } = require('express-validator');
const HttpError = require('../models/http-error');

let DUMMY_LOGENTRIES = [
    {
        id: "j1",
        title: "king"}]

const createLogEntry = (req, res, next) => {
    const errors = validationResult(req);
    if (!errors.isEmpty()) {
        console.log(errors);
        throw new HttpError('Invalid inputs passed, please check your data.', 422);
    }
    const { title } = req.body;
    const createdLogEntry =
    //new logEntry(
    {
        id: uuid(), title  
    };
    DUMMY_LOGENTRIES.push(createdLogEntry);
    res.status(201).json({ logEntry: createdLogEntry });
};

当我删除验证器时,POST请求可以工作,但是带有验证器的Nodemon返回:

formatter: [Function: formatter],
  errors: [
    {
      value: undefined,
      msg: 'Invalid value',
      param: 'title',
      location: 'body'
    },

**附加问题:**如果没有验证器,返回的响应只有uuid...而不是标题,我不知道为什么,因为我要求完整的createdLogEntry,它应该返回标题和uuid。

qvk1mo1f

qvk1mo1f1#

没有发现验证器方面缺少什么,但我确实发现在Postman中返回的是文本而不是JSON。只是重写了所有内容,它工作了。我猜是语法。

lsmd5eda

lsmd5eda2#

我通过重组中间件的顺序修复了我的问题

相关问题