web3 и remixIDE разные возвращаемые значения - PullRequest
0 голосов
/ 06 декабря 2018

Эй, я новичок в Эфириуме.В настоящее время я испытываю основные вызовы / транзакции в веб-приложении.Я написал метод, который возвращает массив строк и массив адресов.Если я вызываю этот метод в remixIde, он работает, и я получаю значения для обоих массивов.Однако тот же вызов в web3 возвращает только значения для массива адресов.Массив строк есть, но все значения пусты.

Я использую цепочку Ganache для тестирования и подключаю ремикс к нему.web3 использует Metamask в качестве провайдера.Я использую "Pragma экспериментальный ABIEncoderV2" с Solidity.

Функция Solidity:

function getAuthorityNames() view public returns(string[], address[]){
    string[] memory names = new string[](authoritiesAddr.length);
    for(uint256 i=0; i < authoritiesAddr.length ;i++){
        names[i]=authorities[authoritiesAddr[i]].name;
    }
    return(names,authoritiesAddr);
}

js код:

getAuthority: function(web3) {
  var mainContractObj = web3.eth.contract(ethFunctions.mainContractAbi);
  var mainContract = mainContractObj.at(ethFunctions.mainContractAddr);

  mainContract.getAuthorityNames.call(function(error, result) {
    if (error) {
      console.log("Error with transaction!");
      console.log(error);
    } else {
      console.log("Transaction successful!");
      console.log(result);
    }
  });
}

ремикс возвращаемые значения

веб-возвращаемые значения

Вызовы работают с обоими методами!Только возвращаемое значение отличается.Почему это?Спасибо!

...