express 使用 express-validator 验证时一直报错,求指点
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 测试数据,返回错误信息:
在编译器中一直报这样的错:
搞不清楚这个原因到底是错在哪里?求指点。
难道必须要验证才能提交成功吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
你验证的是body中的参数,postman发送的参数在header中,验证器在你body体中找不到需要验证的参数路径
我看到你验证的数据是从head中传过去的,但是在代码中获取是从body中拿的。你修改一下试试,再不济也可以用trycatch