我一直在使用Joi进行验证,它很棒。我不知道这个req主体或主要的nodejs代码有什么问题.Joi模式可以与其他api正常工作。我有这个模式文件-:
JS
这是我的请求对象
const schema = Joi.object().keys({
userId : Joi.string(),
email : Joi.string().email(),
name: Joi.string().min(3).max(100),
profilePic: Joi.string(),
address: Joi.string().min(3).max(255),
gender : Joi.string().min(4).max(7),
phoneNumber: Joi.string().regex(/^[0-9]{10}$/),
dob : Joi.date().timestamp(),
pass : Joi.string().min(10),
passcode : Joi.string().regex(/^[0-9]{6}$/),
passcodeCreationTime : Joi.date().timestamp(),
//oldPassword : Joi.array().items(Joi.string()),
resetted : Joi.boolean(),
otp : Joi.string().regex(/^[0-9]{6}$/),
otpGenerationTime : Joi.date().timestamp(),
otpVerified : Joi.boolean(),
noOfSuccessfullAttempt : Joi.number().positive(),
noOfFailedAttempt : Joi.number().positive(),
continousFailedAttempt : Joi.number().positive()
});
module.exports = schema;
主要的nodejs代码
{
"name":"no22",
"email":"123@123.com",
"pass":"1234567890",
"profilePic":"adadsadasd"
}
错误
var temp ={};
temp = req.body;
token = Math.random().toString(36).substring(3, 15) + Math.random().toString(36).substring(1, 15);
temp['userId']="temp";
temp['phase1Token']= token;
temp['profilePic']=req.body.profilePic;
temp['pass'] = req.body.pass;
var r = Joi.attempt(temp,userValidator)
if(r.error){
console.log(r.error);
return res.json(response.validationResponse("invalid user data",res));
}
任何帮助都将非常有用,谢谢。