我试图从auth.js调用在文件validation.js中定义的registerValidation函数,但出现以下错误
UnhandledPromiseRejectionWarning:错误:无效消息选项
有谁能告诉我为什么和如何纠正吗?
auth.js
const router = require("express").Router();
const User = require("../model/User")
const {registerValidation} = require("./validation")
router.post('/register', async(req, res)=>{
//Lets validate the data
//error appears here
const {error} = registerValidation(req.body);
if(error){
return res.status(400).send(error.details[0].message)
}
const user = new User({
name:req.body.name,
email:req.body.email,
password:req.body.password
});
try{
const savedUser = await user.save();
res.send(savedUser);
}catch(err){
res.status(400).send(err)
}
})
module.exports = router;
validation.js
//VALIDATION
const Joi = require("@hapi/joi")
const registerValidation = (data) => {
const schema = Joi.object({
name:Joi.string().min(6).required(),
email:Joi.string().min(6).required().email(),
password:Joi.string().min(6).required()
});
return schema.validate(data, schema)
}
const loginValidation = data =>{
const schema = Joi.object({
email:Joi.string().min(6).required().email(),
password:Joi.string().min(6).required()
});
return schema.validate(data, schema)
}
module.exports = {registerValidation, loginValidation};
validation.js
文件需要如下所示:
const registerValidation = (data) => {...}
const loginValidation = (data) => {...}
module.exports = {
registerValidation,
loginValidation
}
或者,您可以执行以下操作:
const registerValidation = (data) => {...}
const loginValidation = (data) => {...}
module.exports.registerValidation = registerValidation;
module.exports.loginValidation = loginValidation;
registerValidation和loginValidation函数应该如下所示
const Joi = require("@hapi/joi");
const registerValidation = (data) => {
console.log("body ", data)
const schema = Joi.object({
name:Joi.string().min(6).required(),
email:Joi.string().min(6).required().email(),
password:Joi.string().min(6).required()
});
return schema.validate(data) //change here
}
const loginValidation = data =>{
const schema = Joi.object({
email:Joi.string().min(6).required().email(),
password:Joi.string().min(6).required()
});
return schema.validate(data) //change here
}
module.exports = {registerValidation, loginValidation};