如何从组织外查询链码 [英] How to query a chaincode from outside an organization
本文介绍了如何从组织外查询链码的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有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屋!
查看全文