Проблема:
Я разработал матричную сеть Hyperledger, и после этого я установил там цепной код.Вот как выглядят мои методы Инициализации регистра.
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 info [lib / handler.js]
info: [myc-09f261c4] Вызов цепного кода Init () выполнен успешно.Отправка сообщения COMPLETED обратно равноправному пользователю {"отметка времени": "2019-05-09T05: 18: 51.184Z"} {fcn: 'initLedger', params: []} ============= START: Инициализировать книгу =========== 123 Добавлено <-> {nic: '123', firstName: 'Saman', lastName: 'Fernando', статус: 'Не проверено', licenceNo: '1234', docType:' driver '} 124 Добавлено <-> {nic:' 124 ', firstName:' Janith ', lastName:' Bentharaarachchi ', статус:' Не проверен ', номер лицензии:' 1235 ',
docType: 'driver'} ============= END: Инициализировать книгу =========== {fcn: 'selectNthDriver', params: ['123']} nic:123 Привет Ошибка: Драйвер с NIC123 не существует в selectNthDriver (/usr/local/src/mycc.js:494:13) в at process._tickCallback (внутренний / 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
}
}
}
Может кто-нибудь помочь мне выяснить, где я делаю неправильно?Спасибо.