簡體   English   中英

MyContract.methods.addData在Node.js Web3中不起作用

[英]MyContract.methods.addData doesn't work from nodejs web3

我連接到我的Solidity ,通過合同nodejsweb3 我能夠讀取信息,但是在嘗試將元素添加到數組時不會添加。

這是我的代碼。

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.add(0, web3.utils.asciiToHex("some string")).call()
  .then(receipt => {
      console.log(" added? " + receipt); // returns [object Object]
});

然后獲取值:

myContract.methods.getArray().call()
  .then(receipt => {
      console.log("full array " + receipt);
});

數組返回,但其所有值仍為空0x0000000000000000000000000000000000000000000000000000000000000000

我使用Remix測試了這種聯系方式,效果很好,可以添加值,並且可以看到它們。 但是我需要從nodejs進行此nodejs ,到目前為止它仍然無法正常工作。

在下面的代碼中使用call是不正確的。

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

這是一個常見的錯誤。 call用於在本地VM上運行功能,並且不會廣播到區塊鏈進行挖掘。 狀態的任何更改都需要使用sendhttps : //web3js.readthedocs.io/en/1.0/web3-eth-contract.html#methods-mymethod-send

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM