从Web3向固定合同方法发送值会导致“无效的元组值”错误

时间:2019-07-29 12:01:09

标签: node.js ethereum solidity web3 web3js

我正在使用solidity 0.5.1web3方法发送值,并不断收到invalid Tuple value错误。

这是相关的合同代码:

struct mystruct {
    bytes32 id; 
    string str;
}

mapping (bytes32 => mystruct) structs;

function creatMyStruct(bytes32 id, string memory str) public {
    mystruct memory newStruct = mystruct(id, str);
    structs[id] = newStruct;
}

我从node.js开始称呼此人

contract.methods.creatMyStruct(someId, someString).send({from: fromAccount, gas: gasEstimate})
    .then(receipt => {
       var txhash = receipt.transactionHash;
       resolve(txhash);
    },
    (error) => {
        reject(error);
    }).catch((err) => {
         reject(err);
    });

我尝试发送stringnumber,并将字符串转换为hex。相同的错误:invalid tuple value。我想念什么?

1 个答案:

答案 0 :(得分:0)

编辑:您实例化新结构错误。问题是合同。查看正确的方法

function creatMyStruct(bytes32 _id, string memory _str) public
{
    mystruct storage newStruct = mystruct({id: _id, str: _str});
    structs[id] = newStruct;
}