我尝试查询Daml模板文本-映射,将其扔给我空集,而不是提供该特定数据- 例如:
"Data": [
{ "information":"XYZ",
{
"textMap": {
"Type": {
"_1": "A",
"_2": "B"
},
"Date": {
"_1": "2019-11-29",
"_2": "AMD"
},
}
}
}}
]
在这里,在上面的示例中,我尝试仅使用类型键查询,但没有引发与该特定键有关的任何数据,但是当我发送Map的两个键值时,我都可以获取该特定数据。希望仅在该Map内发送一个键值进行查询。如何在daml中实现此功能。
答案 0 :(得分:3)
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”的查询选项。