错误:在 nodeJS 中"UnhandledPromiseRejectionWarning: Error: Invalid message options"



我正试图从auth.js调用文件validation.js中定义的registerValidation函数,但出现错误

未处理的PromiseRejection警告:错误:无效的消息选项

有人能告诉我为什么以及如何纠正吗?

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};

您需要将函数封装在一个对象中,然后导出该对象,如以下示例所示:

const registerValidation = (data) => {...}
const loginValidation = (data) => {...}
module.exports = {
registerValidation,
loginValidation
}

或者,由于module.exports本身就是一个对象,您可以执行以下操作:

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};

相关内容

最新更新