Hyperledger fabric 关于Hyperledger结构上下文

Hyperledger fabric 关于Hyperledger结构上下文,hyperledger-fabric,hyperledger,Hyperledger Fabric,Hyperledger,我希望能在这个小问题上得到一些帮助。 根据Fabric示例中提供的,可以定义自定义的上下文,该上下文允许跨不同事务处理逻辑。 我们能否在上下文中定义一个初始化为0的变量,并在每个事务中递增它?我似乎无法增加它,即计数器总是在每次交易时重置: class CustomContext extends Context { constructor() { super(); this.comercialPaperList = new PaperList(this); this.c

我希望能在这个小问题上得到一些帮助。 根据Fabric示例中提供的,可以定义自定义的上下文,该上下文允许跨不同事务处理逻辑。 我们能否在上下文中定义一个初始化为0的变量,并在每个事务中递增它?我似乎无法增加它,即计数器总是在每次交易时重置:

class CustomContext extends Context {

constructor() {
    super();
    this.comercialPaperList = new PaperList(this);
    this.counter = 0;
}

generateLogId() {
    return this.numberLogs++;
}

getLatestLogId() {
    return this.numberLogs;
}
}

我有一个增加计数器的测试事务:

async incrementC (ctx)  {
    let before = await ctx.getLatestLogId();
    console.log(before);
    let new = await ctx.generateLogId();
    console.log(new);
    console.log("============== after inc")
    let after = await ctx.getLatestLogId();
    console.log(after);
}
在第一次执行incrementC事务时,如预期的那样,我获得了0、1、1。 在接下来的几次中,我得到了完全相同的结果,就好像上下文没有存储更新一样


任何细节?

自定义上下文与非自定义上下文具有相同的作用域,它只是当前正在执行的事务的上下文。它不能跨越多个事务请求。如果文档中暗示了这一点,那么我建议文档中存在一些错误,应该在会议上提出jira,将其作为一个问题提出。 所以不幸的是,你试图做的事情不会奏效

async incrementC (ctx)  {
    let before = await ctx.getLatestLogId();
    console.log(before);
    let new = await ctx.generateLogId();
    console.log(new);
    console.log("============== after inc")
    let after = await ctx.getLatestLogId();
    console.log(after);
}