Hyperledger Fabric: одноранговый код цепочки invoke: передать объект JSON в функцию chaincode? - PullRequest
0 голосов
/ 16 января 2019

Я могу вызывать функциональность цепного кода с помощью вызова равноправного цепного кода:

`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"} ]}'

возвращает ошибку: ошибка аргумента цепочки кодов: json: невозможно разархивировать массив в поле структуры Go strArgs.Args типа string

1 Ответ

0 голосов
/ 16 января 2019

Я думаю, что вы, возможно, используете старый формат команды 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\"}"]}'

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...