交易状态-数据类型-从字符串到数字的转换-使用javascript

问题描述 投票:0回答:1

我从技术上知道Fabric存储键-值对,其中键是字符串,值是字节数组。

我如何仅在交易代码中使用Number数据类型进行比较?我猜测实际上所有内容都存储在字符串中吗?

我想检查新的num值是否大于已写入总帐的x值,parseInt似乎不起作用。

async transaction(ctx, id, num){
     const x = await ctx.stub.getState(id);

     if(parseInt(x, 10) > parseInt(num, 10)) {
         // then something
     }
}

编辑:已解决,事实证明,当我使用fabric-network API从客户端应用程序调用我的事务时,比较正常,但是使用@worldsibu/hurley的CLI时错误仍然存​​在。

javascript node.js hyperledger-fabric hyperledger
1个回答
0
投票

正如您正确提到的那样,HLF中的值存储为字节数组,您只是在比较之前错过了将byteArray转换为字符串的步骤。试试这个:

const xAsString = x.toString();
if(parseInt(xAsString, 10) > parseInt(num, 10)) {
     // then something
 }

我还考虑您仅在状态中存储了一个数字,如果不是,则从字符串中提取该数字,然后进行所需的比较。

© www.soinside.com 2019 - 2024. All rights reserved.