简体   繁体   English

验证 AdonisJs 5 中的对象数组

[英]Validate array of objects in AdonisJs 5

i'm developing a RestAPI using AdonisJs 5 and i'm trying to validate the request body to be an array of objects which i don't know what properties it may contain so i don't want to specify any properties.我正在使用AdonisJs 5开发 RestAPI,我正在尝试将请求主体验证为一个对象数组,我不知道它可能包含哪些属性,所以我不想指定任何属性。 the payload is something like this有效载荷是这样的

{
    "gap": [
        {
            "1": "small"
        },
        {
            "2": "x"
        },
        {
            "a": "king" 
        }
    ]

}

where the keys represents something for the business logic.其中键代表业务逻辑。 i tried to do it in a couple of ways and neither of them work我尝试了几种方法,但都不起作用

  1. by adding empty object to the members function通过将空的 object 添加到成员 function
public schema = schema.create({
    gap: schema.array.optional().members(schema.object().members({})),
  })

but the result was an array of empty object since adonis neglect any extra data that wasn't provided in the validator schema 2. passing only the schema.object without the members function但结果是一个空数组 object,因为 adonis 忽略了验证器模式 2 中未提供的任何额外数据。仅传递schema.object而没有成员 function

public schema = schema.create({
    gap: schema.array.optional().members(schema.object()),
  })

but this results an error但这会导致错误

There is.anyMembers() option.有.anyMembers() 选项。

Read about it here: https://docs.adonisjs.com/reference/validator/schema/object#accept-any-elements在这里阅读: https://docs.adonisjs.com/reference/validator/schema/object#accept-any-elements

So your solution would be:所以你的解决方案是:

public schema = schema.create({
    gap: schema.array.optional().members(schema.object().anyMembers()),
  })

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM