对于以下简单的CUE代码,该代码定义了一个match
对象,该对象包含两个队名(两个字符串的数组(和匹配的分数(两个整数的数组(:
#match: {
id: int
teams: 2 * [string]
score: 2 * [int]
}
当我运行cue export --out openapi test.cue
(使用CUE v0.4.0(时,我得到错误消息:
components.schemas.match.properties.score.default.0: incomplete value int
components.schemas.match.properties.score.default.1: incomplete value int
components.schemas.match.properties.teams.default.0: incomplete value string
components.schemas.match.properties.teams.default.1: incomplete value string
如果我将string
更改为string | *null
,它会起作用——但是我真的不明白为什么数组的元素需要有一个默认值才能导出为OpenAPI(尤其是因为对对象属性没有这样的要求(?我是不是遗漏了什么?
通常,这看起来与OpenAPI不一致,并且值不完整。解决方法是指定默认元素。
import "list"
#s: string | *null
#match: {
id: int
teams: [#s, #s]
score: list.Repeat([int | *null], 2)
}
注意,我在这里编写team
和score
的方式导致了略微不同但等效的模式。
顺便说一句,数学运算符已被弃用。您应该使用列表。对该部分重复上述步骤。如果你愿意,你也可以列出元素。
有关更多详细信息,请参阅https://github.com/cue-lang/cue/discussions/1115