express 使用 express-validator 验证时一直报错,求指点

发布于 2022-09-11 16:25:29 字数 2856 浏览 33 评论 0

server.js

const express = require('express');
const expressValidator = require('express-validator');
const mongoose = require('mongoose');
const bodyParser = require('body-parser');
const app = express();

const port = 5846;

/**
 * 接口文件
 */
const userApi = require('./router/api/user');

const db = require('./config/key').mongoURI;
mongoose.connect(db,{ useNewUrlParser: true }).then( () => console.log('数据库连接成功!')).catch((err) => console.log(err));

app.use(bodyParser.urlencoded({extended:false}))  
app.use(bodyParser.json());
app.use(expressValidator());

/**
 * 配置路由
 */
app.use('/api/user',userApi);



/**
 * 监听 app
 */
app.listen(port,() => {
    //验证服务是否成功
    console.log('服务启动成功!')
});

router / api / user.js 就是 server.js 中的接口文件

 const express = require('express');
 const {checkBody} = require('express-validator');
 const bcrypt = require('bcryptjs');
 const router = express.Router();
 const UserModel = require('../../models/User');

/**
  * 指定接口地址
  * POST api/user/register
  */
router.post('/register',(req,res) => {
    req.checkBody("userName", "Enter a user name.").notEmpty().trim();
    req.checkBody("userEmail","Enter a valid email address.").notEmpty();
    req.checkBody("userPassword","Enter a user password.").notEmpty();
    
    UserModel.findOne({userName:req.body.userName})
        .then((user) => {
            if(user){
                return res.status(400).json({userName:'用户名巳存在'})
            }else{
                const newUser = new UserModel({
                    userName: req.body.userName,
                    userEmail:req.body.userEmail,
                    userPassword: req.body.userPassword,
                    userDate:req.body.userDate
                });

                //给数据加密,加密后再保存到数据库
                bcrypt.genSalt(10, function(err, salt) {
                    bcrypt.hash(newUser.userPassword, salt, (err, hash) => {
                        if(err){
                            console.log(err);
                            res.send({
                                message :'Post request error!'
                            });
                        }
                        newUser.userPassword = hash;

                        //保存数据到数据库
                        newUser.save()
                                 .then(user => res.json(user))
                                 .catch(err => console.log(err));
                    });
                });
            }
        });
}

使用 postman 测试数据,返回错误信息:

clipboard.png

在编译器中一直报这样的错:

clipboard.png

搞不清楚这个原因到底是错在哪里?求指点。

难道必须要验证才能提交成功吗?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

财迷小姐 2022-09-18 16:25:29

你验证的是body中的参数,postman发送的参数在header中,验证器在你body体中找不到需要验证的参数路径

九局 2022-09-18 16:25:29

我看到你验证的数据是从head中传过去的,但是在代码中获取是从body中拿的。你修改一下试试,再不济也可以用trycatch

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文