如何从组织外查询链码 [英] How to query a chaincode from outside an organization

查看:16
本文介绍了如何从组织外查询链码的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有4个组织:

  • 组织1--2对等方
  • 组织2--2对等方
  • OrgCam--0个对等点,1个客户端
  • 组织视图--0个对等机,1个客户端

组织1的同级已安装链码,用于访问某些仅对组织1可用的私有数据。

作为OrgCam的客户端,我希望访问安装在Org1的同级上的链码。

当我尝试这样做时:

const result = await contract.evaluateTransaction('getPoints','ID1');

出现此错误

2019-05-19T15:20:20.084Z - error: [SingleQueryHandler]: evaluate: message=No peers available to query. Errors: [], stack=FabricError: No peers available to query. Errors: []
    at SingleQueryHandler.evaluate (/home/zanna/fabric-samples/first-network/clientCode/node_modules/fabric-network/lib/impl/query/singlequeryhandler.js:39:17)
    at Transaction.evaluate (/home/zanna/fabric-samples/first-network/clientCode/node_modules/fabric-network/lib/transaction.js:246:29)
    at Contract.evaluateTransaction (/home/zanna/fabric-samples/first-network/clientCode/node_modules/fabric-network/lib/contract.js:172:39)
    at main (/home/zanna/fabric-samples/first-network/clientCode/camera.js:41:39)
    at <anonymous>, name=FabricError
Failed to evaluate transaction: FabricError: No peers available to query. Errors: []

我的问题是:即使我不是组织1的客户,如何查询组织1的链码?

推荐答案

我终于做到了。

1。

const result = await contract.evaluateTransaction('getPoints','ID1');

必须更改为:

const result = await contract.submitTransaction('getPoints','ID1');

以便从外部组织中的同行获取信息。

2.

如果正在使用私有数据,则必须在collections_config.json文件中删除"memberOnlyRead""memberOnlyWrite"(1)字段或将其设置为false,这一点很重要。

示例:

[
 {
   "name": "collectionFacepoints",
   "policy": "OR('Org1MSP.member')",
   "requiredPeerCount": 2,
   "maxPeerCount": 2,
   "blockToLive": 0,
   "memberOnlyRead": false
 }
]

3.

gateway.connect(connectionProfile, connectionOptions)中,将discovery.enable=true添加到connectionOptions非常重要。

示例:

await gateway.connect(
  connectionProfile,
  {
    wallet,
    identity: identityConfig.identityLabel,
    discovery: {
      enabled: true,
      asLocalhost: true
    },
    eventHandlerOptions: {
      strategy: DefaultEventHandlerStrategies.NETWORK_SCOPE_ALLFORTX
    }
  }
);

4.

遗憾的是,OrgCam中的客户端似乎无法直接查询org1的对等方中安装的链码,但可以添加充当锚点对等方的空(2)OrgCam对等方。


  • (1):"memberOnlyWrite"暂时不可用。请参见here
  • (2):"空"表示没有安装任何链码。

这篇关于如何从组织外查询链码的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆