Contract.methods leeren Mit web3 JS 1.0.0-beta30

Ich versuche, eine Methode für einen lokal bereitgestellten Vertrag mit dem folgenden Code mit web3 JS 1.0.0-beta30 aufzurufen.

const tradingCardABI = JSON.parse(fs.readFileSync('build/contracts/TradingCard.json')).abi;

const ownerAddress = process.env.OWNER_ADDRESS || '0x627306090abaB3A6e1400e9345bC60c78a8BEf57';
const contractAddress = process.env.CONTRACT_ADDRESS || '0xf25186b5081ff5ce73482ad761db0eb0d25abfbf';

const tradingCardContract = new web3.eth.Contract(tradingCardABI, contractAddress);

console.log(`contract json interface=${JSON.stringify(tradingCardContract.options.jsonInterface)}`);
console.log(`contract models=${JSON.stringify(tradingCardContract.methods)}`);

Ich komme contract methods={}in die Konsole. Irgendwelche Gedanken?

Antworten (1)

Ich habe das gleiche ausprobiert und mich gefragt, warum das methods objectso ist empty. Ich habe versucht, die Console.log instance.methodsdirekt zu loggen, was mir einen Fehler gab, dass ... nicht angezeigt werden kann.

Dann habe ich einfach versucht, eine Funktion von diesem "leeren" Objekt aufzurufen, und es hat funktioniert, wie es sollte.

Die Antwort lautet also, dass Sie die Methoden aufrufen können, auch wenn sie nicht in Ihrer JSON-Ausgabe angezeigt werden.

Verwenden Sie den folgenden Code, um die Methoden aufzurufen:

YOURINSTANCE.methods.YOUR_METHOD().call().then(ret => {
    console.log(ret);
});