来自 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
我正在尝试连接 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