我有一个场景,我需要从链码函数(比如更新)调用其他一些(比如查询)函数。超级账本结构是否为此提供任何接口。例如:
...
async query(stub, args) {
}
async update(stub, args) {
if(condition) {
call query();
}
}
...
我已经尝试了以下帖子的答案,但没有奏效。 如何从自身调用链码函数来记录子交易。虽然通过使用 invokeChaincode() 我可以从另一个链码调用函数。
提前致谢。
链码代码:
let Chaincode = class {
async Init(stub) {
return shim.success();
}
async Invoke(stub) {
let ret = stub.getFunctionAndParameters();
console.info(ret);
let method = this[ret.fcn];
if (!method) {
throw new Error('Received unknown function ' + ret.fcn + ' invocation');
}
try {
let payload = await method(stub, ret.params);
return shim.success(payload);
} catch (err) {
return shim.error(err);
}
}
async init(stub, args) {
if (args.length != 1) {
throw new Error('Invalid args. Expects no args');
}
}
async query(stub, args) {
...
}
async dummy(stub, args) {
return Buffer.from('Hello');
}
async update(stub, args) {
...
let resp = await dummy(); // gives error
//let resp = await stub.invokeChaincode('cc2', ['dummy'] ); // working
console.log(resp)
...
}
};
shim.start(new Chaincode());