【发布时间】:2015-04-29 02:53:40
【问题描述】:
我一直在尝试在我们的节点应用程序中实现 Joi(joi 作为独立的,而不是 hapi),它似乎正确验证了架构,但错误总是相同的
[ValidationError: value must be an object]
name: 'ValidationError',
details:
[ { message: 'value must be an object',
path: 'value',
type: 'object.base',
context: [Object] } ],
_object:.....
我从来没有得到它失败的具体细节以及失败原因的描述。
这是我正在使用的示例架构:
exports.workersSchema =
{
workers: joi.array({
id: joi.string().alphanum(),
wID: joi.object({
idValue: joi.string().alphanum()
}),
person: {
governmentIDs: joi.array({itemID: joi.string().alphanum()}),
legalName: joi.object({
givenName: joi.string(),
middleName: joi.string(),
preferredSalutations: joi.array(
{
salutationCode: {
longName: joi.string()
}
}
),
preferredName: joi.object().keys({
FormattedName: joi.string()
}),
}),
birthDate: joi.string().alphanum()
}
})
}
这是我要发送的 json 对象:
{"workers" : [
{
"id" : "",
"wID" : {
"idValue" : ""
},
"person" : {
"governmentIDs":[{
"itemID": "asd"
}],
"legalName":{
"givenName" : "PA",
"middleName" : "",
"preferredSalutations" : [{
"salutationCode" : {
"longName" : ""
}
}],
"preferredName" : {
"FormattedName" : ""
},
"birthDate" : ""
}]
}
我在这里做错了什么?我什至试图在博客上关注一些东西,虽然示例显示了详细信息,但除了
"value must be an object"
它会正确地验证它,但是当它看到一个不合适的值时,它只会给出那个错误而不是其他任何东西。
此外,如果您查看“wID”部分,它有一个“idValue”对象,但当我去掉 idValue 并在 wID 键上放一个字母数字时,它也通过了验证。
ps。验证作为对象的键时。我是否必须使用
进行验证key: Joi.object({
a:Joi.string()
})
或者我可以这样做吗?:
key: {
a:Joi.string()
}
非常感谢您的帮助!
【问题讨论】:
-
您能否举一个您尝试验证的对象的示例,以便我们自己尝试并修改架构以适合?
-
该对象不是有效的 JavaScript 对象。您缺少一些右 } 括号
-
var obj = { "workers" : [{ "id" : "", "wID" : { "idValue" : "" }, "person" : { "governmentIDs":[{ "itemID": "asd" }], "legalName":{ "givenName" : "PA", "middleName" : "", "preferredSalutations" : [{ "salutationCode" : { "longName" : "" } }], "preferredName" : { "FormattedName" : "" }, }, "birthDate" : "" } }] };
标签: node.js validation schema hapijs joi