如何将地图添加到 ytt 中的地图数组?

How do I add a map to an array of maps in ytt?

我正在尝试将地图添加到 ytt 中的地图数组以修改 YAML 文档。

我尝试了下面的方法,但它出错了,并说它需要一个地图,但得到的是一个数组。

https://gist.github.com/amalagaura/c8b5c7c92402120ed76dec95dfafb276

---
id: 1
type: book
awards:
  books:
  - id: 1
    title: International Botev
    reviewers:
      - id: 2
        name: PersonB
  - id: 2
    title: Dayton Literary Peace Prize
    reviewers:
      - id: 3
        name: PersonC
        
#! How do I add a map to an array of maps?
#@ load("@ytt:overlay", "overlay")

#@overlay/match by=overlay.all
---
awards:
  books:
    #@overlay/match by=overlay.all, expects="1+"
    #@overlay/match missing_ok=True
    reviewers:
      #@overlay/append
      - id: 1
        name: PersonA
      

#@ load("@ytt:overlay", "overlay")

#! Add a map to an array of maps:

#@overlay/match by=overlay.all
---
awards:
  books: 
  #@overlay/match by=overlay.all, expects="1+"
   - reviewers:
       #@overlay/append
       - id: 1
         name: Person A

您的解决方案非常接近,您真正需要的只是使 reviewers 成为数组项。如果您希望能够将评论者添加到没有该键的书中,那么您将必须在数组项和地图项上添加一个匹配器;下面包含一个要点,以查看此行为叠加的实际效果。 如果您在同一项目上有多个 #@overlay/match 注释,则以最后一个为准。有改进此行为的计划:https://github.com/k14s/ytt/issues/114.

https://get-ytt.io/#gist:https://gist.github.com/gcheadle-vmware/a6243ee73fa5cc139dba870690eb15c5