【问题标题】:In consul-template, how to limit the number of elements over which I am ranging?在领事模板中,如何限制我所覆盖的元素数量?
【发布时间】:2016-09-20 16:17:35
【问题描述】:

以下是我使用服务呈现节点地址的代码:

    {{range "service@datacenter" "passing"}}{{.Address}} {{end}}

我想要做的是限制呈现的地址数量。例如,如果有 5 个节点注册为“服务”提供者,我只想打印其中 2 个的地址。我认为我应该做的是对数组进行切片,但我无法正确使用 GO 语法。这是我想要但语法不正确的东西:

    {{range "service@datacenter" "passing" [0:2]}}{{.Address}} {{end}}

这样做的正确方法是什么?

【问题讨论】:

  • 我知道 Go 模板,但我不知道 consul。也许像{{range $i := loop 2}}{{$service := (index (service "foo" "passing"))}}{{$service.Address}}{{end}} 这样的东西?如果少于两个,这将失败。
  • 从我收集的信息来看,$service 似乎是一个数组,所以{{$service.Address}} 抛出了一个错误,因为 $service 中没有 .Address 元素。最重要的是,我们如何限制我们打印的地址数量?我试图朝这个方向努力并尝试做一个{{$x := service "foo" "passing"}}{{range $i := loop 2}}{{$y := (index $x $i)}}{{$y.Address}}{{end}},但它给出了'index out of bound:0'错误。也许我没有正确使用索引功能。

标签: go consul consul-template


【解决方案1】:

找到了限制使用 consul-template 可以呈现的数组元素数量的解决方案。

    {{$x := service "service@datacenter" "passing"}}{{range $index, $element := $x}}{{if lt $index 2}}{{$element.Address}},{{end}}{{end}}

范围函数提供了一个索引变量以及数组元素,可用于使用 if 块检查限制。这里将呈现仅有的两个地址。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-02
    • 2023-01-26
    相关资源
    最近更新 更多