来自 hyperledger composer Queries tutorial against couchdb Fabric runtime 的错误 运行 查询

Error running query from hyperledger composer Queries tutorial against couchdb Fabric runtime

我正在尝试连接 Composer 和 Fabric 之间的点以构建支持多个组织的概念验证应用程序。因此,我正在使用 Composer 教程构建业务网络,然后使用 "Deploying to a multi-organization business network" 教程(它引用了 Fabric "Build your first network" 教程,但告诉您使用与 BYFN 不同的 git 存储库教程,我做的)。

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

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

  {
  "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,因此问题不可能出在我传递的内容上(因为实际上没有任何东西可以传递)。问题必须是系统性的。

示例:获取所有商品查询

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 中的查询到低级面料 API?后一种理论得到 Composer API 层returned 的 500 的支持,该层具有嵌套的 400 错误,这意味着 Composer 层通过 hlfconnection 传递的某些内容是无效的。

非常感谢任何帮助!我无法想象我是第一个 运行 的人,但我没有在网上找到任何直接相关的内容。 提前致谢!

Composer 版本 0.16.6

Docker PS:

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

这可能是由于 Composer 版本 (16.x) 与 Fabric (1.1) 版本匹配所致。 Composer 0.16.x 仅适用于 Fabric v1.0.x(您可以从日志/docker images 检查您安装的内容)。发行说明详细说明了哪些版本的 composer 可以与哪些版本的 fabric 一起使用。例如 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