使用 web3 从智能合约中获取空结果
getting empty result form smart-contract using web3
我是 web3 的新手,总体来说是 solidity,但我一直在关注有关从 web3 调用合同方法的网络文档
我的 solidity 智能合约:
pragma solidity ^ 0.5.0;
contract Royalties {
string public name = "RoyaltiesContract";
uint public nextArtistId = 1;
uint public nextSongId = 0;
uint public nextCollabId = 0;
mapping(uint => Artist) public Artists;
struct Artist {
uint id;
string ArtistName;
address ArtistAddress;
}
function createArtist(string memory ArtistName,address Artistaddress) public returns(uint id, string memory Name, address Address) {
Artists[nextArtistId] = Artist(nextArtistId,ArtistName, Artistaddress);
nextArtistId++;
return(nextArtistId,ArtistName, Artistaddress);
}
function getArtist(uint id) view public returns(uint, string memory , address){
return(Artists[id].id,Artists[id].ArtistName, Artists[id].ArtistAddress);
}
}
完成所有配置后我的 web3 代码:
shoot(royalties) {
const createArtist = royalties.methods.createArtist("DMX","0x518251583591f3DE330Eb539AB64b6E95C1EE5c5").call().then(
function(result){
console.log(result)
},
royalties.methods.getArtist(1).call({defaultBlock :'latest'}).then(console.log)
)
}
请记住 id:1 的艺术家已经存在 上面的 shoot() 函数在点击时触发,第一个 console.log 这是 createArtist 方法 returns 结果相同像这样的智能合约:
Result {0: "2", 1: "DMX", 2: "0x518251583591f3DE330Eb539AB64b6E95C1EE5c5", id: "2", Name: "DMX", Address: "0x518251583591f3DE330Eb539AB64b6E95C1EE5c5"}
但是第二个 console.log 是 getArtist(1) 方法 returns 请记住已经 id:1 的艺术家:
Result {0: "0", 1: "", 2: "0x0000000000000000000000000000000000000000"}
感谢您花时间阅读我的问题。
我是 web3 的新手,总体来说是 solidity,但我一直在关注有关从 web3 调用合同方法的网络文档
我的 solidity 智能合约:
pragma solidity ^ 0.5.0;
contract Royalties {
string public name = "RoyaltiesContract";
uint public nextArtistId = 1;
uint public nextSongId = 0;
uint public nextCollabId = 0;
mapping(uint => Artist) public Artists;
struct Artist {
uint id;
string ArtistName;
address ArtistAddress;
}
function createArtist(string memory ArtistName,address Artistaddress) public returns(uint id, string memory Name, address Address) {
Artists[nextArtistId] = Artist(nextArtistId,ArtistName, Artistaddress);
nextArtistId++;
return(nextArtistId,ArtistName, Artistaddress);
}
function getArtist(uint id) view public returns(uint, string memory , address){
return(Artists[id].id,Artists[id].ArtistName, Artists[id].ArtistAddress);
}
}
完成所有配置后我的 web3 代码:
shoot(royalties) {
const createArtist = royalties.methods.createArtist("DMX","0x518251583591f3DE330Eb539AB64b6E95C1EE5c5").call().then(
function(result){
console.log(result)
},
royalties.methods.getArtist(1).call({defaultBlock :'latest'}).then(console.log)
)
}
请记住 id:1 的艺术家已经存在 上面的 shoot() 函数在点击时触发,第一个 console.log 这是 createArtist 方法 returns 结果相同像这样的智能合约:
Result {0: "2", 1: "DMX", 2: "0x518251583591f3DE330Eb539AB64b6E95C1EE5c5", id: "2", Name: "DMX", Address: "0x518251583591f3DE330Eb539AB64b6E95C1EE5c5"}
但是第二个 console.log 是 getArtist(1) 方法 returns 请记住已经 id:1 的艺术家:
Result {0: "0", 1: "", 2: "0x0000000000000000000000000000000000000000"}
感谢您花时间阅读我的问题。