如何通过 JSonApi 从 Daml 中查询 Map 值?

How to query Map values from the Daml through JSonApi?

我试图查询 Daml 模板文本映射,它抛出空集而不是提供特定数据- 例如:

 "Data": [
            { "information":"XYZ",
        {
            "textMap": {
                "Type": {
                    "_1": "A",
                    "_2": "B"
                },
                "Date": {
                    "_1": "2019-11-29",
                    "_2": "AMD"
                },
                }
            }
        }}
    ]

在这里,在上面的示例中,我尝试仅使用类型键进行查询,但它没有抛出与该特定键相关的任何数据,但是当我发送 Map 的两个键值时,我可以获得该特定的 data.but 我只想在该 Map 中发送一个键值以进行查询 it.how 可以在 daml 中实现这一点。

TextMap 的行为类似于查询 API 中的列表。映射是一个值,您只能在 上匹配整个 。您可以看到列表 here.

的行为

假设您在模板中有一个简单的 TextMap

daml 1.2
module Main where

import DA.TextMap as Map

template T
  with
    p : Party
    m : TextMap Int
  where
    signatory p

setup = scenario do
  p <- getParty "p"
  submit p do
    create T with
      p
      m = Map.fromList [
          ("one", 1),
          ("two", 2)
        ]

使用以下负载对 contracts/search 的调用将匹配。

{ 
  "%templates": [ 
    { 
      "moduleName": "Main", 
      "entityName": "T" 
    } 
  ], 
  "m" : {
    "two": "2", 
    "one": "1"
  } 
}

即使地图项的顺序调换了,m 的参数表示相同的地图,所以值是相等的。

但是,简单地更改为 "m" : { "one" : "1" } 将不匹配。我们正在查询类型为 T 的合同,其地图只有一个条目 "one".

目前没有 "containsKey" 或 "contains" 的查询选项。