Я пытаюсь использовать экспресс-валидатор в сочетании с multer для проверки компонентов тела запроса POST, который также содержит изображение, заголовки и параметры. Я пробовал использовать методы проверки стиля body(), а также стиль checkSchema, но ни один из них не будет правильно проверять текстовые поля моего тела. Стиль checkSchema будет работать с моими заголовками и параметрами, но не с телом по какой-то причине. Может быть, мне нужно как-то переставить вещи?
const express = require('express');
const multer = require('multer');
const { checkSchema } = require('express-validator');
const router = express.Router();
const upload = multer();
// inputs coming in from everywhere - header, params and form-data
router.post(
'/:aId/help/:tId/blah',
checkSchema({
aId: {
// The location of the field, can be one or more of body, cookies, headers, params or query.
// this check works!
in: ['params'],
errorMessage: 'aId is wrong',
isAscii: true
},
tId: {
// this check works
in: ['headers'],
errorMessage: 'pId is wrong',
isAscii: true
},
uploadedTime: {
// these checks fail to work
in: ['body'],
errorMessage: 'uploadedTime is wrong',
isInt: true
},
uploadedByName: {
// these checks fail to work
in: ['body'],
errorMessage: 'uploadedByName is wrong',
isInt: false
}
}),
upload.single('file'),
async (req, res) => {
console.info('ANY REQ params?', req.params);
console.info('ANY headers?', req.headers);
console.info('ANY BODY?', req.body);
console.info('ANY FILES?', req.file);
}
);
мой журнал показывает это для тела:
ANY BODY? [Object: null prototype] {
uploadedTime: '1646762107739',
uploadedByName: 'Moe S'
}
использование multer должно пройти до проверки