Solidity

使用web3 js在solidity合約函式中獲取返回值的問題

  • June 6, 2019

固體功能:

function getCredentials(uint id) public constant returns(string,string,uint) 
{
   address ad=acadr[id];
   uemail=email[ad];
   ulocation=location[ad];
   ugid=gid[ad];
   return (uemail,ulocation,ugid);
}

web3呼叫程式碼:

myInstance.getCredentials(1,function (error, result) {
                            if (!error) {
                                console.log(result);
                            } else
                                console.log(error);
}

這會在 log 中列印一個十六進制值,而不是 string 和 int

請幫忙 !

您的函式正在更新可驗證的值,因此它將被視為事務函式,並將在區塊鏈中為其生成事務,

作為呼叫的回報,您將得到該交易的交易雜湊(交易 id),

所以這裡有2個選項

  1. 編寫一個常量函式來獲取變數的值
  2. 使用事件,一種可靠的日誌記錄機制,它將在成功探勘交易後返回傳遞給它的值。

對於使用事件,請查看此問題中的程式碼

用於.call將其作為只讀呼叫而不是事務發送。

myInstance.getCredentials.call(1, (error, result) => {

})

引用自:https://ethereum.stackexchange.com/questions/50748