Node.js MyContract.methods.addData不';无法从nodejs web3工作

Node.js MyContract.methods.addData不';无法从nodejs web3工作,node.js,ethereum,solidity,web3,web3js,Node.js,Ethereum,Solidity,Web3,Web3js,我正在通过nodejs和web3连接到我的Solidity合同。我能够读取信息,但当尝试向数组添加元素时,它不会被添加 这是我的密码 solidity方法: bytes32[20] bytesArray; function add(uint8 id, bytes32 s) public { bytesArray[id] = s; } 来自我的nodejs文件的调用: var myContractABI = <the_abi>; var contractAddress = '

我正在通过
nodejs
web3
连接到我的
Solidity
合同。我能够读取信息,但当尝试向数组添加元素时,它不会被添加

这是我的密码

solidity
方法:

bytes32[20] bytesArray;

function add(uint8 id, bytes32 s) public {
  bytesArray[id] = s;
} 
来自我的
nodejs
文件的调用:

var myContractABI = <the_abi>;
var contractAddress = '0x...';
var myContract = new web3.eth.Contract(myContractABI, contractAddress);
myContract.setProvider(web3.currentProvider);
然后获取值:

myContract.methods.getArray().call()
  .then(receipt => {
      console.log("full array " + receipt);
});
数组返回,但其所有值仍然为空,
0x0000000000000000000000000000000000000000


我用
Remix
测试了这种接触,效果很好,添加了值,我可以看到它们。但我需要在nodejs中执行此操作,但到目前为止它还不起作用

在下面的代码中使用
调用
是不正确的

myContract.methods.add(0, web3.utils.asciiToHex("some string")).call()
  .then(receipt => {
      console.log(" added? " + receipt); // returns [object Object]
});

这是一个常见的错误<代码>调用
用于在本地VM上运行函数,而不是广播到区块链进行挖掘。对状态的任何更改都需要使用
send

谢谢,我会试试的。我想我需要签署
send
交易?如果你有一个完整的例子,我将不胜感激。好的,我在你发送的链接中看到了这些例子。我会试试看,如果成功,我会接受答案。谢谢
myContract.methods.add(0, web3.utils.asciiToHex("some string")).call()
  .then(receipt => {
      console.log(" added? " + receipt); // returns [object Object]
});