Hyperledger fabric 在node.js编写的hyperledger结构中调用self函数
在hyperledger fabric中,当我通过node.js编写链码时。如何通过Hyperledger fabric 在node.js编写的hyperledger结构中调用self函数,hyperledger-fabric,Hyperledger Fabric,在hyperledger fabric中,当我通过node.js编写链码时。如何通过invoke调用anthor函数 const shim = require('fabric-shim'); var Chaincode = class { async Init(stub) {} async Invoke(stub) {} async func1(stub) { // how to invoke `func2` her
invoke
调用anthor函数
const shim = require('fabric-shim');
var Chaincode = class {
async Init(stub) {}
async Invoke(stub) {}
async func1(stub) {
// how to invoke `func2` here?
}
async func2(stub) {}
}
我想在
func1
中调用func2
V1:根据官方的nodeJS fabcar链码示例(),这应该可以:
var Chaincode = class {
async Invoke(){
let method = this["func1"];
await method(stub,this);
//...
}
async func1(stub,methods) {
await methods.func2(stub);
//your code
}
async func2(stub) {
//your code
}
}
V2:普通Javascript类
var Chaincode = class{
constructor(){
}
async func1(){
console.log("FUNC 1");
this.func2();
}
async func2(){
console.log("FUNC 2");
}
}
我知道这个问题已经问了很久了,但对于那些面临同样问题的人,我是这样解决的:
var Chaincode = class {
constructor() {
this.func1 = this.func1.bind(this)
}
async Init(stub) {}
async Invoke(stub) {}
async func1(stub) {
// how to invoke `func2` here?
this.func2(stub)
}
async func2(stub) {}
}
你试过这个.func2()吗?@leonardocararo是的,但我得到了
未定义的函数
。我还将func2
函数作为全局函数移出类Chaincode
。发生了相同的错误。从您的代码和测试方式来看,结果是正常的。但是在fabric中,所有函数invoke
都由fabric shim
utils调用。所以不能直接用常规方法进行测试。链码应该在hyperledger结构环境中进行测试。这是真的。根据官方的nodeJS-fabcar-chaincode(),这可能会起作用:var-chaincode=class{async-func1(stub){let-method=this[“func2”];let-res=wait-method(stub);}async-func2(stub){//your-code}