使用 solidity 和 Web3,当我尝试执行 myEvent.get() 时,我得到的只是 myEvent: undefined
With solidity and Web3, when I attempt to do myEvent.get() all I get is myEvent: undefined
这是我获取事件的 JS 脚本部分:
EthProj.Message({}, { fromBlock: 0, toBlock: 'latest' }).get((error, eventResult) => {
if (error)
console.log('Error in setEvent event handler: ' + error);
else
console.log('setEvent: ' + JSON.stringify(eventResult.args));
});
}
这是我的合约脚本:
pragma solidity ^0.4.18;
contract EthProj {
string fName;
string age;
event Message(string name, string age);
function setMessage(string _fName, string _age) public {
fName = _fName;
age = _age;
emit Message(_fName, _age);
}
function getName() public constant returns (string) {
return (fName);
}
function getMessage() public constant returns (string) {
return (age);
}
}
当我调用 setMessage 时,我得到了 undefined。我不知道我做错了什么。谁能帮忙?我是不是没有正确获取事件,还是根本没有设置它们?
您必须在返回任何内容之前对事件启动 watch
。当 watch
是 运行 时,您可以在新事件进入时接收它们,或者您可以使用 get
.
重新检索事件
var events = EthProj.Message({}, { fromBlock: 0, toBlock: 'latest' });
events.watch((error, results) => {
console.log(results); // Will show a single event object
});
events.get((error, eventResult) => {
if (error)
console.log('Error in setEvent event handler: ' + error);
else
console.log('Event count: ' + eventResult.length); // Notice object returned is an array
eventResult.forEach(element => console.log('setEvent: ' + JSON.stringify(element)));
});
这是我获取事件的 JS 脚本部分:
EthProj.Message({}, { fromBlock: 0, toBlock: 'latest' }).get((error, eventResult) => {
if (error)
console.log('Error in setEvent event handler: ' + error);
else
console.log('setEvent: ' + JSON.stringify(eventResult.args));
});
}
这是我的合约脚本:
pragma solidity ^0.4.18;
contract EthProj {
string fName;
string age;
event Message(string name, string age);
function setMessage(string _fName, string _age) public {
fName = _fName;
age = _age;
emit Message(_fName, _age);
}
function getName() public constant returns (string) {
return (fName);
}
function getMessage() public constant returns (string) {
return (age);
}
}
当我调用 setMessage 时,我得到了 undefined。我不知道我做错了什么。谁能帮忙?我是不是没有正确获取事件,还是根本没有设置它们?
您必须在返回任何内容之前对事件启动 watch
。当 watch
是 运行 时,您可以在新事件进入时接收它们,或者您可以使用 get
.
var events = EthProj.Message({}, { fromBlock: 0, toBlock: 'latest' });
events.watch((error, results) => {
console.log(results); // Will show a single event object
});
events.get((error, eventResult) => {
if (error)
console.log('Error in setEvent event handler: ' + error);
else
console.log('Event count: ' + eventResult.length); // Notice object returned is an array
eventResult.forEach(element => console.log('setEvent: ' + JSON.stringify(element)));
});