首页 > 解决方案 > 在 Hyperledger Fabric NodeJS 智能合约中,所有参数都应该作为字符串传递吗?

问题描述

fabric-sampleHyperledger Fabric 的存储库中,具体是商业票据的示例应用:

https://github.com/hyperledger/fabric-samples/blob/release-1.4/commercial-paper/organization/magnetocorp/application/issue.js

有一行调用该issue函数:

const issueResponse = await contract.submitTransaction('issue', 'MagnetoCorp', '00001', '2020-05-31', '2020-11-30', '5000000');

最后一个参数应该是一个整数,但该值5000000作为字符串传递。

这是在 Hyperledger Fabric 中编写 NodeJS 智能合约的要求,所有参数都应作为字符串传递吗?

标签: node.jshyperledger-fabric

解决方案


是的,函数参数必须作为字符串传递。

如果您想将 JSON 传递给函数,您可以对数据进行字符串化并在方法内对其进行解析。

例如:

data = "{\"field1\":\"value1\",\"field2\":\"value2\"}"
var response = await contract.submitTransaction('myFunction', data);

然后在你的链码中

async myFunction(ctx, data){
    data = JSON.parse(data);

    //... your logics
}

推荐阅读