Solidity
從發送函式返回一個值
大家好,我有一個非常大的問題。我有這段程式碼
function showInfo(uint _pesel) public onlyMainPerson(msg.sender) returns (string memory, string memory) { string memory x = showName(_pesel); string memory y = showDate(_pesel); return(x,y); } function showName(uint _pesel) private view returns( string memory) { return(wills[_pesel].name); } function showDate(uint _pesel) private view returns( string memory) { return(wills[_pesel].date); }
我想在我的網路應用程序中使用它,我正在這樣做
const names = await this.state.contract.methods.showInfo(123).send({from: this.state.account}, (e) => { console.log("done") console.log(names); }) console.log(names);
但它不工作!它只顯示“未定義”。如何解決?提前致謝!
你在這裡有兩個問題:
- 您正在鏈上執行您的函式,因此您無法擷取返回值。
send
方法返回事務雜湊,而不是函式呼叫結果。解決此問題的最簡單方法是將您的函式標記為並通過以下方法
view
在鏈下執行:call
function showInfo(uint _pesel) public view onlyMainPerson(msg.sender) returns (string memory, string memory) { string memory x = showName(_pesel); string memory y = showDate(_pesel); return(x,y); }
const names = await this.state.contract.methods.showInfo(123).call( {from: this.state.account}); console.log(names);
有關詳細資訊,請參閱文件。