1

尝试以附加方式使用锚点,遵循 YAML 代码将不起作用,但可以解释我想要它做什么

  endpoint:
    data.updates.index.name: &UPDATES-INDEX-NAME "data-updates"
    meta.data.type.name: &DATA-TYPE-NAME "meta-data"
    last.run.type.name: &RUN-TYPE-NAME "lastrun"
    search.ctx: *UPDATES-INDEX-NAME "/" *DATA-TYPE-NAME "/_search"
    search.lastrun: *UPDATES-INDEX-NAME "/" *RUN-TYPE-NAME "/_search"
    update.lastrun: *UPDATES-INDEX-NAME "/" *RUN-TYPE-NAME "/"

a1: &anchor1 "你好" a2: &anchor2 "月亮" 属性: *anchor1 "-" *anchor2

属性应该产生“hello-moon”这有可能吗?也尝试使用 ${} 而不是锚点

4

1 回答 1

0

这对于 YAML 是不可能的。锚/别名功能旨在序列化循环数据结构,而不是用于重用表达式中的值。在 YAML 中,没有表达式(嗯,除了!!mergeYAML 1.1 的标记已过时,在这里对您没有帮助)。您需要在加载时或加载后对数据执行所有操作。

一种可能的方法:

endpoint:
  data.updates.index.name: "data-updates"
  meta.data.type.name: "meta-data"
  last.run.type.name: "lastrun"
  search.ctx: "{{data.updates.index.name}}/{{meta.data.type.name}}/_search"
  search.lastrun: "{{data.updates.index.name}}/{{last.run.type.name}}/_search"
  update.lastrun: "{{data.updates.index.name}}/{{last.run.type.name}}/"

如您所见,我使用非 YAML 标记(在本例中为类似小胡子)作为占位符。您需要在加载后对数据进行后处理,以便用适当的内容替换占位符。

于 2016-12-13T15:25:46.280 回答