Hyperledger fabric 在node.js编写的hyperledger结构中调用self函数

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

在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` 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}