Я пытаюсь создать простую таблицу базы данных, используя фабрику Hyperledger. В таблице 3 поля, ID, имя и дата рождения. Имя и дата рождения - строка. Я использую пример базовой сети. Вот мой код:
const shim = require('fabric-shim');
const util = require('util');
var Chaincode = class {
// Initialize the chaincode
async Init(stub) {
console.info('========= example02 Init =========');
console.log("HELLO WORLD!!!");
console.log("Init: Does nothing!");
return shim.success();
}
async Invoke(stub) {
let ret = stub.getFunctionAndParameters();
console.info("Truong: async Invoke!!");
console.info(ret);
let method = this[ret.fcn];
if (!method) {
console.log('no method of name:' + ret.fcn + ' found');
return shim.success();
}
try {
let payload = await method(stub, ret.params);
return shim.success(payload);
} catch (err) {
console.log(err);
return shim.error(err);
}
}
// Insert
async insert(stub, args) {
console.log("Truong: async insert!!!");
if (args.length != 2) {
throw new Error('Incorrect number of arguments. Expecting 2');
}
let ID = args[0];
let Attrs = args[1];
await stub.putState(ID, Buffer.from(JSON.stringify(Attrs)));
}
// Delete
async delete(stub, args) {
console.info("Truong: async delete!!!");
if (args.length != 1) {
throw new Error('Incorrect number of arguments. Expecting 1');
}
let ID = args[0];
// Delete the key from the state in ledger
await stub.deleteState(ID);
}
// query callback representing the query of a chaincode
async query(stub, args) {
if (args.length != 1) {
throw new Error('Incorrect number of arguments. Expecting name of the person to query')
}
let jsonResp = {};
let ID = args[0];
// Get the state from the ledger
let Result = await stub.getState(A);
if (!Result) {
jsonResp.error = 'Failed to get state for ' + ID;
throw new Error(JSON.stringify(jsonResp));
}
jsonResp.ID = ID;
jsonResp.Attrs = Result.toString();
console.info('Query Response:');
console.info(jsonResp);
return Result;
}
};
shim.start(new Chaincode());
Однако, когда я набираю следующую строку:
docker exec -e "CORE_PEER_LOCALMSPID=Org1MSP" -e "CORE_PEER_MSPCONFIGPATH=/etc/hyperledger/msp/users/Admin@org1.example.com/msp" peer0.org1.example.com peer chaincode query -C mychannel -n mycc -c '{"Args":["insert", "1", {"name": "Dang Manh Truong", "date": "26/04/1995"}]}'
Произошла ошибка:
Error: chaincode argument error: json: cannot unmarshal array into Go struct field strArgs.Args of type string
Означает ли это, что ткань не принимает json в качестве входных данных? Пожалуйста, помогите мне, большое спасибо.