Solidity
使用web3 js在solidity合約函式中獲取返回值的問題
固體功能:
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個選項
- 編寫一個常量函式來獲取變數的值
- 使用事件,一種可靠的日誌記錄機制,它將在成功探勘交易後返回傳遞給它的值。
對於使用事件,請查看此問題中的程式碼
用於
.call
將其作為只讀呼叫而不是事務發送。myInstance.getCredentials.call(1, (error, result) => { })