- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我试了又试,还是想不通:(
这是我需要验证的对象:
let body = {
greeting:
{
stringValue: 'Hello !',
stringListValues: [],
binaryListValues: [],
dataType: 'String'
},
newsletterId:
{
stringValue: '123456789',
stringListValues: [],
binaryListValues: [],
dataType: 'String'
}
};
我需要验证是否有greeting,它有键stringValue 并且不为空。其他值我不关心。
此外,对于第二个对象 newsletterId,它也有键 stringValue 并且不是空的。其他值我不关心。
我想到了只检查根对象,使用这个模式:
const schema = {
greeting: Joi.required(),
newsletterId: Joi.required()
};
我看了很多例子,但我找不到一个有这种结构的例子。
最佳答案
让我们定义一个架构:
const schema = Joi.object().keys({
greeting: Joi.object({
stringValue: Joi.string().required().empty(['', null]),
stringListValues: Joi.array().items(Joi.string()),
binaryListValues: Joi.array().items(Joi.binary())
}).required(),
newsletterId: // same as above
});
然后像这样测试它:
Joi.validate(myObjectToTest, schema, function(error, cleanObject){
console.log(error, cleanObject);
})
关于javascript - JOI - 验证复杂对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54578135/
我有一个 api,在过去的开发中,它会接收逗号分隔的字符串作为有效输入,并使用以下内容作为验证器: Joi.string() 但现在我想使用这里提到的字符串数组来实现相同的变量 https://git
这是我的 Joi 模式 const createRoom = { body: { createdBy: Joi.string().required(), members: Joi.
我刚刚遇到了我必须处理的这行代码: Joi.array().label('Emails').items(Joi.string()).required() 我特别不明白 .label('Emails')
我有两个文件,一个是 api.js,另一个是 handler.js。对于模式处理,我正在使用庆祝模块 @hapi/joi On api.js I wrote only the API name On
let obj = Joi.object().keys({ "id": Joi.string().required(), "array": Joi.array().items
我想使用 Joi 验证对象,该对象不使用 Joi.ref() 和乘法运算。 var object = { a: 5, b: 6 } // this is wrong as Joi.re
我正在构建一个 JOI 扩展,如果他们在 JWT 范围内缺少某些角色,我可以将某些人列入黑名单,禁止他们发送某些 API 值。 到目前为止我已经这样做了: const Joi = require('j
我有一个场景,我需要根据所在国家/地区使用不同的正则表达式验证增值税号。因此,当字段 language 为 SE 时,我想使用此正则表达式 /^\d{6}-\d{4}$/字段 company.vatN
根据 Joi 文档,您可以像这样使用 Joi.object(): const object = Joi.object({ a: Joi.number().min(1).max(10).inte
joi.string().valid(['foo', 'bar']) 已弃用。 Error: Method no longer accepts array arguments: allow 实现这一目
我如何使用 Joi 来验证替换字段具有零个或多个键/值对?并且每个键都是一个字符串,每个值都是一个字符串、数字或 bool ? "substitutions": { "somekey": "s
我有一个复杂的验证,它根据 JSON 中的 a 值而变化。 { type: 'a', thing: 1, foo: 'abc' } { type: 'b', thing: 2, bar: 123 }
我有一个这样的嵌套模式设置: var schema = Joi.object().keys({ first_name: Joi.string().required(), last_name:
我目前在我的应用程序中有以下架构: Joi.object().keys({ users: Joi.array().items(mySchema) }) 所以我可以获得一组用户并验证它们。但现在我需
您好,我正在使用 "@hapi/joi": "^15.1.1"。很遗憾,我现在无法更新到最新的 Joi 版本。 这是我的验证模式 const schema = { name: Joi.str
我正在尝试验证一个架构,该架构与其他字段一起具有一系列自引用对象,如下所示: export const answer = answerModel.concat(Joi.object().keys({
我在 Joi 验证方面遇到了一个问题(或者我认为是一个问题)。如果它作为请求正文的一部分传递,我正在尝试为不存在的键分配一个值。 例如: parameters: Joi.object().keys({
我想为 populatedString 创建自定义 Joi 类型,方法是使用 .extend(..) 创建一个基于 joi.string() 的类型 其中: trim 字符串 如果 trimmed s
我必须逐个验证值,而不是为多个值传入整个架构。基于此处的单值验证文档 https://hapi.dev/module/joi/ 和这个示例代码 const validator: AnySchema =
我尝试使用 Joi.alternatives.try() 创建一个 Joi 模式.这是我尝试过的模式。 Joi.alternatives().try(Joi.object({ type: Jo
我是一名优秀的程序员,十分优秀!