首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >TypeError:在调用函数时,value.forEach不是函数

TypeError:在调用函数时,value.forEach不是函数
EN

Ethereum用户
提问于 2020-11-30 05:33:15
回答 2查看 773关注 0票数 0

我正在使用特松露部署一个合同上的加纳奇和检索合同在一个快递应用程序。虽然我可以获得契约实例,并且它可以console.log一个函数对象的列表,但函数不能在代码中调用。

这是我的合同:

代码语言:javascript
复制
contract Vote{
    uint dem = 0;
    uint pub = 0;

    constructor() public {
        dem = 0;
        pub = 0;
    }

    function vote(uint v) public {
        if(v == 1){
            pub += 1;
        } else {
            dem += 1;
        }
    }

    function getWinner() public view returns (uint) {
        if(dem > pub){
            return dem;
        } else {
            return 0 - pub;
        }
    }
}

代码调用函数:

代码语言:javascript
复制
var voteAbi = [{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"constant":false,"inputs":[],"name":"getWinner","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256[]","name":"v","type":"uint256[]"}],"name":"vote","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}]
web3.eth.defaultAccount = web3.eth.accounts[0]
web3.personal.unlockAccount(web3.eth.defaultAccount)
var voteContract = web3.eth.contract(voteAbi);
var voteInstance = voteContract.at("0x0711217536458a37580e669de781554ce33236c24711d351d446a437e16ae058");
voteInstance.vote.call(1)
voteInstance.vote(1)
voteInstance.vote.sendTransaction(1,{from:web3.eth.accounts[0]})

这三行都调用函数的投票结果导致Foreach问题。我是web3和区块链的新手!有什么可能会出错的想法吗?

EN

回答 2

Ethereum用户

发布于 2022-07-10 08:00:25

你的呼叫数据插入区块链之前。在web3JS中使用异步功能如下:

代码语言:javascript
复制
var voteAbi = [{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"constant":false,"inputs":[],"name":"getWinner","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256[]","name":"v","type":"uint256[]"}],"name":"vote","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}]
web3.eth.defaultAccount = web3.eth.accounts[0]
web3.personal.unlockAccount(web3.eth.defaultAccount)
var voteContract = web3.eth.contract(voteAbi);
var voteInstance = voteContract.at("0x0711217536458a37580e669de781554ce33236c24711d351d446a437e16ae058");


async function votingBro(){
   await voteInstance.vote.call(1)
   await voteInstance.vote(1)
   await voteInstance.vote.sendTransaction(1,{from:web3.eth.accounts[0]})
}

votingBro()
票数 1
EN

Ethereum用户

发布于 2020-11-30 22:00:54

这是一个由松露引起的问题。当我在我的ganache-cli中重新混合和部署合同时,它就能工作了。

票数 0
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/90622

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档