I have following Solidity Contract function, it returns values when called from truffle develop, but return empty object when called from javascript.
- Below is Solidity function
function verifyMyVote(string calldata _partyName) public view returns (string memory _nicop, uint _voterIndex) {
address ethAdd = candidateContractReference.getCandidateDataFromPartyName(_partyName);
require(ethAdd != address(0),"No Candiate Found for this Party (function verifyMyVote)");
for(uint loop=0; loop < votersMapping[ethAdd].length; loop++) {
if(votersMapping[ethAdd][loop].voterEthAddress == msg.sender) {
return (votersMapping[ethAdd][loop].nicop,loop);
}
}
}
- When called from truffle develop it return values as below:
truffle(develop)> let voterinstance = new Voter("0x4feeE081262b199dC92160Cb9aEaDaC90EBb7678")
undefined
truffle(develop)> voterinstance.verifyMyVote("PPP")
Result {
'0': '37405',
'1': BN {
negative: 0,
words: [ 0, <1 empty item> ],
length: 1,
red: null
},
_nicop: '37405',
_voterIndex: BN {
negative: 0,
words: [ 0, <1 empty item> ],
length: 1,
red: null
}
}
truffle(develop)>
- Issue--> If I call it from my Javascript file; it return object without values. My Javascript file is as below:
function verifyvote() {
//function verifyMyVote(string calldata _partyName)public view returns (string memory _nicop, uint _voterIndex)
let selectedpartyname = $("#partyNames").val();
console.log("Inside verifyvote()...verifyvote.js");
VOTER_ContractObject.methods.verifyMyVote(selectedpartyname).call((error,result) => {
console.log("Inside verifyMyvote()...verifyvote.js: " + selectedpartyname);
if(result) {
console.log(result);
}
else {
console.log("Votes not found: " + error);
}
});
}
Here are Browser Developer Tools Console output (called from javascript)
Inside verifyvote()...verifyvote.js
verifyvote.js:28 Inside verifyMyvote()...verifyvote.js: PPP
u {0: '', 1: '0', _nicop: '', _voterIndex: '0'}0: ""1: "0"_nicop: ""_voterIndex: "0"[[Prototype]]: Object