路线
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。
2条答案
按热度按时间qvk1mo1f1#
没有发现验证器方面缺少什么,但我确实发现在Postman中返回的是文本而不是JSON。只是重写了所有内容,它工作了。我猜是语法。
lsmd5eda2#
我通过重组中间件的顺序修复了我的问题