javascript - Hyperledger Composer 查询 Assets 参数

标签 javascript hyperledger-fabric hyperledger hyperledger-composer

我已经定义了我的 super 账本 Composer 模型文件;

namespace org.acme.myNetwork

asset Asset identified by assetId {
 o String assetId
 --> Owner owner
 o String assetStatus
}

participant Owner identified by ownerId {
 o String ownerId
 o String ownerName
 o String ownerStatus
}

我想查询具有 assetStatus =“invalid”值的 Assets 的所有者。我读过 hyperledger composer query language文档中似乎只有个人可以查询 Assets 或参与者的示例,但没有显示如何查询 Assets 或参与者的参数的示例。

 query selectAsset {
  description: "Select Asset"
  statement: SELECT org.acme.myNetwork.Asset
              WHERE assetStatus == "invalid"
 }

 query selectAssetParameter {
  description: "Select Asset Parameter"
  statement: SELECT org.acme.myNetwork.Asset.owner
              WHERE assetStatus == "invalid"
 }

上面查询的第一个示例是有效的,但是编写的第二个查询会在 Playground 中抛出此错误:

发现错误! t:未为 org.acme.myNetwork.Asset.owner 类型定义命名空间

最佳答案

我将您的模型粘贴到 Composer Playground 中,并收到一条错误消息,您的 Assets 名称为 Asset是一个保留字 - 如果您能够使用不同的方法部署此模型,我想知道提出问题。我使用的 Assets 名称为 Ass1为了我的测试。

对于您的查询,您需要在 where 条件周围加上括号,例如WHERE (assetStatus == "invalid")

为了回答您的问题 - 您已经创建了针对属性 (assetStatus) 的查询,但结果集始终是完整 Assets 的列表,而不仅仅是单个属性(这与SQL 选择)。

您的查询将返回与“无效”匹配的 Assets ,并且所有者将作为资源引用返回。例如"owner": "resource:org.acme.myNetwork.Owner#AA1"

如果您想要获取所有者的所有属性,而不仅仅是 ID,那么您必须编写第二个查询,或者在所有者注册表上执行 GET 请求。作为替代方案,您可以对 Ass1( Assets )注册表的 GET 请求使用过滤器,这将“解析”所有者。

所以使用这个过滤器:{"where":{"assetStatus":"invalid"}, "include":"resolve"}在此端点 /api/Ass1使用 GET 请求您将看到以下结果:

  {
   "$class": "org.acme.myNetwork.Ass1",
    "assetId": "WILL01",
    "owner": {
      "$class": "org.acme.myNetwork.Owner",
      "ownerId": "AA1",
      "ownerName": "Albert",
      "ownerStatus": "VALID"
    },
    "assetStatus": "invalid"
  }

关于javascript - Hyperledger Composer 查询 Assets 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50013948/

相关文章:

javascript - 使用 Moment.js,如何将时刻转换为日期或进行日历日期比较?

javascript - 我可以使用 javascript 或 jquery 更改按钮上的文本 "view project"吗?

javascript - 第一次点击 - 更改 ul 高度,第二次点击 - 重置高度

javascript - 关闭库 key 事件监听不起作用

hyperledger-fabric - Hyperledger Fabric 在启用 TLS 的情况下实现,也可以在没有 TLS 的情况下工作?

hyperledger-fabric - super 账本结构 : How to specify more than 1 CA in the CORE_PEER_TLS_CLIENTROOTCAS_FILES variable?

区 block 链和 HyperLedger Fabric 的区别

hyperledger-fabric - Hyperledger Composer 发出身份信息但缺少名片

hyperledger-fabric - 私有(private)数据收集的重点是什么?

hyperledger-fabric - 背书链码时出错 : rpc error