我能够通过对等链代码调用方式调用链代码功能:
`peer chaincode invoke -o localhost:7050 -C mychannel -n pmc -c '{"function":"initLedger","Args":["one", "two"]}`
但是我想将javascript对象作为参数传递:
`peer chaincode invoke -o localhost:7050 -C mychannel -n pmc -c '{"function":"initLedger","Args":[ {property1:"one"}, {property2:"two"}]}`
但这失败,因为无效字符'p'寻找对象关键字字符串的开头。我尝试了其他几种排列方式,但都没有成功。
文档将-c表示为:
-c,--ctor字符串JSON格式的链代码的构造函数消息(默认为“ {}”)
可以告诉正确的语法来传递对象。
编辑1: 为了完整起见
peer chaincode invoke -o localhost:7050 -C mychannel -n pmc -c '{"function":"initLedger","Args": [{"property1":"one", "property2":"two"} ]}'
返回错误:Chaincode参数错误:json:无法将数组解组为字符串类型的Go结构字段strArgs.Args
答案 0 :(得分:1)
我认为您可能使用了旧格式的invoke命令,所以我建议使用这样的新格式,其中包括字符串化的JSON对象:
peer chaincode invoke -o localhost:7050 -C mychannel -n pmc -c '{"Args":["initLedger","{\"property1\":\"one\",\"property2\":\"two\"}"]}'
但是,如果您需要使用格式,那么也许:
peer chaincode invoke -o localhost:7050 -C mychannel -n pmc -c '{"function":"initLedger", "Args": ["{\"property1\":\"one\",\"property2\":\"two\"}"]}'