如何从可选字段中进行选择而不是使用必填字段?

2023-12-28

我正在尝试添加数据源data_source_person支持2种输​​入方式:

Schema: map[string]*schema.Schema{
    "id": {
        Type: schema.TypeString,
        Computed:    true,
        Optional:    true,
    },
    "first_name": {
        Type:        schema.TypeString,
        Computed:    true,
        Optional:    true,
    },
},

即,任一值id or first_name应该指定,但不能同时指定(它是oneOf关系)。

如果指定了“id”,则代码将执行GET /people/{ID}否则必须指定“display_name”,并且在这种情况下GET /people将被调用,返回一个人员列表,代码将运行一个过滤器来查找具有以下特征的人员的 ID:response.data.people[i].display_name == {providedDisplayName}.

TF数据源是否支持这种配置(两个属性都是计算的,可选)?


可以在模式中指定该属性既是computed and optional,但您更常在资源模式中看到这一点。在一个resource and data源模式,optional表示可选输入,并且computed表示其值可以在配置期间计算。它们可以共存,因为参数或块可以是输入或输出。例如,这是不可能的。required是真实的并且computed确实如此,因为这将是输入和输出,而这些会发生冲突。

此外,根据您问题中的描述,您还想利用ExactlyOneOf:

Schema: map[string]*schema.Schema{
  "id": {
    Type:         schema.TypeString,
    Optional:     true,
    Computed:     true,
    ExactlyOneOf: []string{"id", "first_name"},
  },
  "first_name": {
    Type:         schema.TypeString,
    Optional:     true,
    Computed:     true,
    ExactlyOneOf: []string{"id", "first_name"},
  },
},
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从可选字段中进行选择而不是使用必填字段? 的相关文章

随机推荐