Ошибка вызова цепного кода, Node SDK, метод: channel.sendTransactionProposal () - PullRequest
0 голосов
/ 09 мая 2019

Я получаю TypeError от узла фабрики hyperledger sdk, когда пытаюсь отправить предложение по транзакции. Ниже мой телефонный код:

    const prop_response = await channel.sendTransactionProposal({
        targets: peers,
        chaincodeId: "ccid1",
        fcn: ADD_ASSET,
        args: [mockAsset],
        txId: client.newTransactionID()
    });

Документацию по методу можно найти здесь: https://fabric -sdk-node.github.io / Channel.html # sendTransactionProposal__anchor
Документы утверждают, что метод ожидает объект ChaincodeInvokeRequest, однако код не ожидает объект. Ниже приведена ошибка:

TypeError [ERR_INVALID_ARG_TYPE]: The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type object
    at Function.from (buffer.js:225:9)

Любая помощь будет принята с благодарностью.

1 Ответ

2 голосов
/ 09 мая 2019

Это происходит, когда свойство args содержит данные, которые не относятся к типу string, Buffer, ArrayBuffer, Array, or Array-like Object.

Убедитесь, что каждый аргумент массива соответствует требуемому типу. Проверьте, например, нет ли элементов undefined.

В вашем примере я предполагаю, что mockAsset - это объект json. Исходя из моего опыта, вы должны записать свой json, а затем проанализировать его обратно в коде цепи.

const prop_response = await channel.sendTransactionProposal({
        targets: peers,
        chaincodeId: "ccid1",
        fcn: ADD_ASSET,
        args: [JSON.stringify(mockAsset)],
        txId: client.newTransactionID()
    });

В вашем коде цепи (модель программирования <1.4): </p>

mockAsset = JSON.parse(args[0]) 

модель программирования> = 1,4

mockAsset = JSON.parse(myParam)

Чтобы этот ответ был полным, вы должны сказать нам, что такое mockAsset.

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