从hyperledger composer运行查询时出错查询针对couchdb Fabric运行时的教程

时间:2018-03-20 00:43:26

标签: hyperledger-composer hyperledger-fabric-ca

我正在尝试连接Composer和Fabric之间的点,以构建支持多个组织的概念验证应用程序。所以,我正在使用Composer教程来构建业务网络,然后使用"部署到多组织业务网络"教程(引用了Fabric"构建你的第一个网络"教程,但是告诉你使用与我做过的BYFN教程不同的git repo。)

我能够使用Composer的Developer教程构建简单的交易业务网络,然后将存档复制到我使用Fabric构建多组织业务网络的文件夹(需要couchdb,我和#39) ; d想要使用以便能够进行更复杂的查询),启动它,然后使用资源管理器REST API创建参与者,资产和交易事务。这一切都很好。

然后,我转到Composer Queries教程中添加queries.qry,生成一个新的存档,复制&更新了存档的结构安装,已停止&更新和重新启动REST API服务器。我现在可以在REST API中看到查询,所以我知道它已经获取了新代码。但是,无论我尝试通过REST API资源管理器运行哪些查询,它们都会返回相同的错误:

  {
  "error": {
    "statusCode": 500,
    "name": "Error",
    "message": "Error trying to query business network. Error: chaincode error (status: 500, message: Error: Couch DB Error:invalid_operator,  Status Code:400,  Reason:Invalid operator: $class)",
    "stack": "Error: Error trying to query business network. Error: chaincode error (status: 500, message: Error: Couch DB Error:invalid_operator,  Status Code:400,  Reason:Invalid operator: $class)\n    at channel.queryByChaincode.then.catch (/usr/local/lib/node_modules/composer-rest-server/node_modules/composer-connector-hlfv1/lib/hlfconnection.js:809:34)\n    at <anonymous>"
  }
}

本教程中最简单的查询是一个简单的get all all,没有任何参数,所以问题不能成为我传入的内容(因为没有任何内容可以传递)。问题必须是系统性的。

示例:获取所有商品查询

query selectCommodities {
  description: "Select all commodities"
  statement:
      SELECT org.acme.biznet.Commodity
}

错误消息显示它在响应中不喜欢$ class。

The response from the GET all commodities endpoint (which doesn't use the query) is:

[
  {
    "$class": "org.acme.biznet.Commodity",
    "tradingSymbol": "KPX",
    "description": "KnitPicks",
    "mainExchange": "SP",
    "quantity": 50,
    "owner": "resource:org.acme.biznet.Trader#4567"
  },
  {
    "$class": "org.acme.biznet.Commodity",
    "tradingSymbol": "KPX2",
    "description": "KnitPicks",
    "mainExchange": "SP",
    "quantity": 120,
    "owner": "resource:org.acme.biznet.Trader#4567"
  }
]

和selectCommodities查询样本响应的API文档具有相同的格式:

[
  {
    "$class": "org.acme.biznet.Commodity",
    "tradingSymbol": "string",
    "description": "string",
    "mainExchange": "string",
    "quantity": 0,
    "owner": {}
  }
]

所以我不确定是什么问题,但似乎问题是查询本身与CouchDB不兼容,或者从Composer中的查询到低级别的转换层出现问题Fabric API?后者理论由具有嵌套400错误的Composer API层返回的500支持,这意味着Composer层通过hlfconnection传递的内容无效。

非常感谢任何帮助!我无法想象我是第一个碰到这个但我还没有找到与网络直接相关的东西。 提前谢谢!

Composer版本0.16.6

Docker PS:

f844a2957bd5 dev-peer0.org2.example.com-tutorial-network-0.16.6-95a0f8a4fe6ff659a5943abc80b26a1134e77b74942eef102fa92c8480b680eb&#34; chaincode -peer.add ...&#34; 24小时前up 24小时dev-peer0.org2.example.com-tutorial-network-0.16.6 556c9f3841ce dev-peer0.org1.example.com-tutorial-network-0.16.6-e4f751b9b8b3a307f6bf25ea97ccf3625bd75730a1dcb3f989a9a34bbb73f536&#34; chaincode -peer.add ...&#34; 24小时前up 24小时dev-peer0.org1.example.com-tutorial-network-0.16.6 831ca5b9a839 dev-peer1.org2.example.com-tutorial-network-0.16.6-a184efa69bdcbcb2e6ec3764e01d56f0c574ca0ad09d4656269d3b7aefbc44b8&#34; chaincode -peer.add ...&#34; 24小时前up 24小时dev-peer1.org2.example.com-tutorial-network-0.16.6 6faf5b875df9 dev-peer1.org1.example.com-tutorial-network-0.16.6-44b9f2a6ea1ed75f106aa0b5fc8387c95cbde9eee551df9fb36d16709f2db981&#34; chaincode -peer.add ...&#34; 24小时前最多24小时dev-peer1.org1.example.com-tutorial-network-0.16.6 afbcbe9292fd dev-peer1.org2.example.com-mycc-1.0-26c2ef32838554aac4f7ad6f100aca865e87959c9a126e86d764c8d01f8346ab&#34; chaincode -peer.add ...&#34; 26小时前最多26小时dev-peer1.org2.example.com-mycc-1.0 8444f922486d dev-peer0.org1.example.com-mycc-1.0-384f11f484b9302df90b453200cfb25174305fce8f53f4e94d45ee3b6cab0ce9&#34; chaincode -peer.add ...&#34; 26小时前最多26小时dev-peer0.org1.example.com-mycc-1.0 753588bacb47 dev-peer0.org2.example.com-mycc-1.0-15b571b3ce849066b7ec74497da3b27e54e0df1345daff3951b94245ce09c42b&#34; chaincode -peer.add ...&#34; 26小时前最多26小时dev-peer0.org2.example.com-mycc-1.0 662b61c00673 hyperledger / fabric-peer&#34; peer node start&#34; 26小时前最多26小时0.0.0.0:10051->7051/tcp,.0.0.0:10053->7053/tcp peer1.org2.example.com 80a37822a0d6 hyperledger / fabric-peer&#34; peer node start&#34; 26小时前最多26小时0.0.0.0:8051->7051/tcp,.0.0.0:8053->7053/tcp peer1.org1.example.com 2878eacafb29 hyperledger / fabric-peer&#34; peer node start&#34; 26小时前最多26小时0.0.0.0:9051->7051/tcp,.0.0.0:9053->7053/tcp peer0.org2.example.com e8f3259dca2a hyperledger / fabric-peer&#34; peer node start&#34; 26小时前最多26小时0.0.0.0:7051->7051/tcp,.0.0.0:7053->7053/tcp peer0.org1.example.com a79c29e762cd hyperledger / fabric-couchdb&#34; tini - / docker-ent ...&#34; 26小时前上涨26小时4369 / tcp,9100 / tcp,0.0.0.0:6984-&gt; 5984 / tcp couchdb1 34271122957a hyperledger / fabric-couchdb&#34; tini - / docker-ent ...&#34; 26小时前最多26小时4369 / tcp,9100 / tcp,0.0.0.0:8984-&gt; 5984 / tcp couchdb3 8b88227ea7a7 hyperledger / fabric-ca&#34; sh -c&#39; fabric-ca-se ...&#34; 26小时前最多26小时0.0.0.0:7054->7054/tcp ca_peerOrg1 a75fa6328b02 hyperledger / fabric-ca&#34; sh -c&#39; fabric-ca-se ...&#34; 26小时前最多26小时0.0.0.0:8054->7054/tcp ca_peerOrg2 4e21c3c8fa16 hyperledger / fabric-orderer&#34; orderer&#34; 26小时前最多26小时0.0.0.0:7050->7050/tcp orderer.example.com 2881999a4c7b hyperledger / fabric-couchdb&#34; tini - / docker-ent ...&#34; 26小时前上涨26小时4369 / tcp,9100 / tcp,0.0.0.0:7984-&gt; 5984 / tcp couchdb2 8a77a5e86a3a hyperledger / fabric-couchdb&#34; tini - / docker-ent ...&#34; 26小时前最多26小时4369 / tcp,9100 / tcp,0.0.0.0:5984-&gt; 5984 / tcp couchdb0

1 个答案:

答案 0 :(得分:1)

这可能是由于Composer版本(16.x)与Fabric(1.1)版本相匹配。 Composer 0.16.x仅适用于Fabric v1.0.x(您可以从日志/ docker images检查您安装的内容)。发行说明详细说明了哪个版本的作曲家将使用哪个版本的结构。例如 https://github.com/hyperledger/composer/releases

Composer v0.18.2 and above is compatible with Fabric 1.1 GA only
Composer v0.18.0 -> v0.18.1 : compatible with the Fabric 1.1 RC1 driver only
Composer v0.17.3 -> v0.17.6 (old) are compatible with Fabric 1.1 alpha driver only

Composer v0.16.x -> compatible with Fabric v1.0.x only