Функция Solidity возвращает пустой массив в web3.js - PullRequest
0 голосов
/ 25 марта 2019

Функция Solidity возвращает массив строк при выполнении в Remix, а также консоль трюфелей, в то время как при вызове из JS

возвращает пустой массив

Код солидности

mapping(address => string[]) addressLink;
function getLinks(address a) public view returns (string[] memory)
  {
    return addressLink[a];
  }

JS код

contract.methods.getLinks(accounts[0]).call().then(res => {
                 console.log(res)
             });

Результат консоли трюфеля и ожидаемые результаты при вызове из JS

[ 'QmTiMLN8X4NE4ho5mqJ9t4bJ17JxfMHAFcg3z66f8vdUh1' ]

Результат на консоли браузера (фактический результат)

[""]
0: ""
length: 1

Ответы [ 2 ]

0 голосов
/ 31 марта 2019

В библиотеке web3.js произошла ошибка. Который был закрыт в последней бета-версии

0 голосов
/ 26 марта 2019

Вы можете установить неправильный адрес контракта в своем коде JavaScript:

 const instance = new web3.eth.Contract(
  SimpleStorageContract.abi,
  deployedNetwork && deployedNetwork.address,
 );

Вторым параметром является адрес договора, см .: https://web3js.readthedocs.io/en/1.0/web3-eth-contract.html#new-contract

Надеюсь, это поможет.

...