我正在尝试连接Composer和Fabric之间的点,以构建支持多个组织的概念验证应用程序 . 因此,我使用Composer教程构建业务网络,然后使用“部署到多组织业务网络”教程(引用Fabric“构建您的第一个网络”教程,但是告诉您使用不同的git repo而不是BYFN教程,我做过) .
我能够使用Composer的Developer教程构建简单的交易业务网络,然后将存档复制到我使用Fabric构建多组织业务网络的文件夹(这需要我使用的couchdb)无论如何,为了能够进行更复杂的查询),启动它,然后使用资源管理器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,没有参数,因此问题不能正是我传入的内容(因为没有任何内容可以传递) . 问题必须是系统性的 .
示例:获取所有商品查询
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传递的内容无效 .
任何帮助是极大的赞赏!我无法想象我是第一个碰到这个但我没有在网上发现任何直接相关的东西 . 提前致谢!
作曲家版本0.16.6
Docker PS:
f844a2957bd5 DEV-peer0.org2.example.com教程网 - 0.16.6-95a0f8a4fe6ff659a5943abc80b26a1134e77b74942eef102fa92c8480b680eb “chaincode -peer.add ......” 24小时之前在24小时DEV-peer0.org2.example.com教程网-0.16 . 6 556c9f3841ce DEV-peer0.org1.example.com教程网-0.16.6-e4f751b9b8b3a307f6bf25ea97ccf3625bd75730a1dcb3f989a9a34bbb73f536 “chaincode -peer.add ......” 24小时之前在24小时DEV-peer0.org1.example.com教程网 - 0.16 0.6 831ca5b9a839 DEV-peer1.org2.example.com教程网-0.16.6-a184efa69bdcbcb2e6ec3764e01d56f0c574ca0ad09d4656269d3b7aefbc44b8 “chaincode -peer.add ......” 24小时之前在24小时DEV-peer1.org2.example.com教程 - 网络 - 0.16.6 6faf5b875df9 DEV-peer1.org1.example.com教程网 - 0.16.6-44b9f2a6ea1ed75f106aa0b5fc8387c95cbde9eee551df9fb36d16709f2db981 “chaincode -peer.add ......” 24小时之前在24小时DEV-peer1.org1.example.com教程网-0.16.6 afbcbe9292fd dev-peer1.org2.example.com-mycc-1.0-26c2ef32838554aac4f7ad6f100aca8 65e87959c9a126e86d764c8d01f8346ab“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.0 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小时前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小时前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小时前26小时0.0.0.0:9051->7051/tcp,.0.0.0:9053->7053/tcp peer0.org2.example.com e8f3259dca2a hyperledger / FAB ric-peer“peer node start”26小时前上传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小时前上传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小时前最多26小时0.0.0.0:7054->7054/tcp ca_peerOrg1 a75fa6328b02 hyperledger / fabric- ca“sh -c'fabric-ca-se ...”26小时前26小时0.0.0.0:8054->7054/tcp ca_peerOrg2 4e21c3c8fa16 hyperledger / fabric-orderer“orderer”26小时前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
1 回答
这可能是由于Composer版本(16.x)与Fabric(1.1)版本的匹配 . Composer 0.16.x仅适用于Fabric v1.0.x(您可以从日志中检查/
docker images
您安装的内容) . 发行说明详细说明了哪个版本的作曲家将使用哪个版本的结构 . 例如https://github.com/hyperledger/composer/releases