首页 > 解决方案 > 交易状态——数据类型——从字符串到数字的转换——使用javascript

问题描述

我知道在技术上 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-networkAPI 从客户端应用程序调用我的事务时,比较工作正常,但是在使用@worldsibu/hurley.

标签: javascriptnode.jshyperledger-fabrichyperledger

解决方案


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

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

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


推荐阅读