【发布时间】:2019-05-10 12:59:10
【问题描述】:
问题:
我已经开发了一个 Hyperledger 结构网络,之后我在其中安装了一个链码。这是我的 Initialize ledger 方法的样子。
async initLedger(stub, args) {
console.info("============= START : Initialize Ledger ===========");
let drivers = [];
drivers.push({
nic: "123",
firstName: "Saman",
lastName: "Frenando",
status: "Not verified",
licenceNo: "1234"
});
drivers.push({
nic: "124",
firstName: "Janith",
lastName: "Bentharaarachchi",
status: "Not verified",
licenceNo: "1235"
});
for (let i = 0; i < drivers.length; i++) {
drivers[i].docType = "driver";
console.log(drivers[i].nic);
await stub.putState(
drivers[i].nic,
Buffer.from(JSON.stringify(drivers[i]))
);
console.info("Added <--> ", drivers[i]);
}
console.info("============= END : Initialize Ledger ===========");
}
这就是我检索这些数据的方式。
async selectNthDriver(stub, args) {
if (args.length != 1) {
throw new Error(
"Incorrect number of arguments. Expecting NIC ex: 123"
);
}
let nic = args[0];
console.log(`nic: ${nic}`);
let driverAsBytes = await stub.getState(nic);
console.log("hi"+driverAsBytes);
if (!driverAsBytes || driverAsBytes.toString().length <= 0) {
throw new Error("Driver with NIC" + nic + " does not exist");
}
console.log(driverAsBytes.toString());
return driverAsBytes;
}
当我在对等节点上发出这个命令时,它成功地初始化了账本。
peer chaincode invoke -o orderer.example.com:7050 --tls --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C myc -n mycc -c '{"Args":["initLedger"]}'
当我尝试检索驱动程序时发出以下命令,这样说会留下一个错误。
错误:调用期间背书失败。响应:状态:500 消息:“事务返回失败:错误:带有 NIC123 的驱动程序不存在”
peer chaincode invoke -o orderer.example.com:7050 --tls --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C myc -n mycc -c '{"Args":["selectNthDriver","123"]}
这是链码日志。
2019-05-09T05:18:51.184Z 信息 [lib/handler.js]
信息:[myc-09f261c4] 调用链码 Init() 成功。 将 COMPLETED 消息发送回对等方 {“时间戳”:“2019-05-09T05:18:51.184Z”} { fcn:'initLedger',参数: [] } ============= 开始:初始化分类帐 =========== 123 已添加 { nic: '123', firstName: 'Saman', lastName: '费尔南多,状态: “未验证”,licenceNo:“1234”,docType:“驱动程序”} 124 添加 { nic: '124', firstName: 'Janith', lastName: 'Bentharaarachchi',状态:'未验证',licenceNo:'1235',
文档类型:'驱动程序'} ============= END : 初始化分类帐 =========== { fcn: 'selectNthDriver', params: [ '123' ] } nic: 123 hi 错误:带有 NIC123 的驱动程序不存在 在 selectNthDriver (/usr/local/src/mycc.js:494:13) 在 在 process._tickCallback (internal/process/next_tick.js:188:7) 2019-05-09T05:43:42.430Z 错误 [lib/handler.js]
错误:[myc-e7aef847] 调用链码 Invoke() 返回 错误响应 [错误:带有 NIC123 的驱动程序不存在]。 将错误消息发送回对等方 {"时间戳":"2019-05-09T05:43:42.430Z"}
当我通过浏览器访问 CouchDB 时,它没有显示我初始化的数据。它只显示这些数据。
{
"_id": "mycc",
"_rev": "1-5c5ecfec35f65ec74cbe52a52be96048",
"~version": "\u0000CgMBBwA=",
"_attachments": {
"valueBytes": {
"content_type": "application/octet-stream",
"revpos": 1,
"digest": "md5-SkPMcpW++nrvo5v00rCdRQ==",
"length": 424,
"stub": true
}
}
}
谁能帮我找出我哪里做错了?谢谢。
【问题讨论】:
标签: hyperledger-fabric hyperledger