Node.js 使用Joi验证嵌套对象
如何使用joi验证此对象?我正在使用Joi和Hapi apiNode.js 使用Joi验证嵌套对象,node.js,api,hapijs,joi,Node.js,Api,Hapijs,Joi,如何使用joi验证此对象?我正在使用Joi和Hapi api { "email":"rambo@gmail.com", "password":"abc123", "active":"", "details": { "firstName": "Rambo", "lastName": "Comando", "phoneNumber": "5554446655", "billing":{
{
"email":"rambo@gmail.com",
"password":"abc123",
"active":"",
"details": {
"firstName": "Rambo",
"lastName": "Comando",
"phoneNumber": "5554446655",
"billing":{
"firstName": "",
"lastName": "",
"phoneNumber": "",
"address": "",
"adress2": "",
"postalCode": "",
"city": "",
"state": "",
"country": "",
"stripeId": ""
}
}
}
我试过这样做,但不起作用。正确的做法是什么
payload: {
email: Joi.string().email().required(),
password: Joi.string().alphanum().min(8).max(30).required(),
active: Joi.boolean(),
details: Joi.object().keys({
firstName: Joi.string().max(50),
lastName: Joi.string().max(50),
phoneNumber: Joi.number().integer().min(10).max(11),
billing : Joi.object().keys({
firstName: Joi.string().max(50),
lastName: Joi.string().max(50),
phoneNumber: Joi.string().integer().min(10).max(11),
address: Joi.string().alphanum(),
adress2: Joi.string().alphanum(),
postalCode: Joi.string().alphanum(),
city: Joi.string(),
state: Joi.string(),
country: Joi.string(),
stripeId: Joi.string().alphanum()
})
})
}
我不确定我在哪里漏掉了东西。您的代码中有一个错误,在这一行:
phoneNumber: Joi.string().integer().min(10).max(11),
Node.js引发异常,因为它:
TypeError:Joi.integer不是函数
如果您将其更改为string()
或number()
一切都将正常工作:
phoneNumber: Joi.number().min(10).max(11),
这很明显,所以我只是想知道,你怎么会错过它?您的Joi模式的其他一切似乎都正常。您能指定“不工作”是什么意思吗?@KidBinary hey,它根本不会运行我的node.js应用程序。这个验证中存在问题,因为我有很多其他对象,但不是像这样的嵌套对象。它会引发Node.js异常、Joi验证错误,或者干脆忽略您试图用它验证的负载?@KidBinary我修复了电话号码,但仍然不起作用。我在我的Hapi路由器上使用它。很高兴能帮助:)