在Hyperledger Fabric NodeJS智能合约中,是否应将所有参数作为字符串传递?

时间:2019-06-21 01:45:02

标签: node.js hyperledger-fabric

在Hyperledger Fabric的fabric-sample存储库中,尤其是商业用纸的示例应用程序:

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智能合约时是否要求所有参数都应作为字符串传递?

1 个答案:

答案 0 :(得分:1)

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

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

例如:

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

然后在您的链式密码中

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

    //... your logics
}