首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过JSonApi从Daml查询Map值?

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

Stack Overflow用户
提问于 2019-11-29 06:59:52
回答 1查看 128关注 0票数 2

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

代码语言:javascript
复制
 "Data": [
            { "information":"XYZ",
        {
            "textMap": {
                "Type": {
                    "_1": "A",
                    "_2": "B"
                },
                "Date": {
                    "_1": "2019-11-29",
                    "_2": "AMD"
                },
                }
            }
        }}
    ]

在上面的示例中,我尝试只使用类型键进行查询,但它并不是抛出与该特定键相关的任何数据,但是当我同时发送Map的两个键值时,我能够得到我想要的特定的data.but,我只想在这个映射中发送一个键值,因为查询it.how可以在daml中实现这一点。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-29 08:47:14

TextMap的行为类似于查询API中的列表。地图是一个值,您只能将其作为一个整体进行匹配。您可以看到列表这里的行为。

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

代码语言:javascript
复制
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的调用将匹配。

代码语言:javascript
复制
{ 
  "%templates": [ 
    { 
      "moduleName": "Main", 
      "entityName": "T" 
    } 
  ], 
  "m" : {
    "two": "2", 
    "one": "1"
  } 
}

即使转换了映射项的顺序,m的参数表示相同的映射,因此值是相等的。

但是,更改为简单的"m" : { "one" : "1" }并不匹配。我们正在查询一个T类型的合同,其中包含一个只有一个条目"one"的映射。

目前没有查询"containsKey“或”包含“的选项。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59100131

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档