Я видел несколько сообщений, в которых, кажется, говорится, что body-parser не рекомендуется использовать по крайней мере для использования с express-validator.Я также не вижу упоминания body-parser на странице «Экспресс-проверка документации».Тем не менее, когда я пытаюсь следовать этому руководству по началу работы, я обнаруживаю, что не могу заставить его работать без body-parser.Я не мог точно следовать их учебнику, потому что не понимал некоторые из них, но не думаю, что сделанные мной упрощения будут иметь отношение к этой проблеме.
Мой вопрос: можно ли использовать body-parser?как я это делаю?
Вот что я сделал (у меня версия узла 10.10.0):
mkdir express-validator
cd express-validator
npm install --save express
npm install --save express-validator
файл app.js:
const express = require('express')
const app = express()
app.use(express.json())
const { check, validationResult } = require('express-validator/check')
const bodyParser = require('body-parser')
app.use(bodyParser.urlencoded({ extended: false }))
app.post('/user', [
// username must be an email
check('username').isEmail(),
// password must be at least 5 chars long
check('password').isLength({ min: 5})
], (req, res) => {
// Finds the validation errors in this request and wraps them in an object with handy functions
const errors = validationResult(req)
if (!errors.isEmpty()) {
res.send(errors.array())
return
}
res.send('ok')
})
app.listen(5000, () => console.log(`listening on port $5000`))
Я запускаю сервер, используя node app.js
Затем я использую curl:
curl -d username=fred@gmail.com -d password=12345 localhost:5000/user
Это работает, т.е. я получаю ОК обратно.Если я удаляю символ @ с адреса электронной почты, я получаю это:
[{"location":"body","param":"username","value":"fredgmail.com","msg":"Invalid value"}]
Если я закомментирую строку: app.use(bodyParer.url etc etc
, я получаю сообщение об ошибке error.array () с обеими командами curl, указанными выше.
Можно ли использовать body-parser как я?Если нет, что я должен сделать, чтобы заставить это работать?