[英]Events handler in Ethers.js
I'm using https://github.com/ethers-io/ethers.js/ I have The following smart contract,我正在使用https://github.com/ethers-io/ethers.js/我有以下智能合约,
contract WhiteList {
event logAddressChange(address indexed purchaser, uint256 value, uint256 amount);
function changeContractAddress(address _purchaser, uint256 _whitelistCap)
public
returns (bool)
{
logAddressChange(_purchaser, _whitelistCap, _whitelistCap);
return true;
}
}
I'm trying to develop a node js listener for logAddressChange event.我正在尝试为 logAddressChange 事件开发节点 js 侦听器。 I want to listen to that event only.我只想听那个事件。
my node server js我的节点服务器js
app.listen(port, function() {
homeController.check_health();
});
My node js controller我的节点js控制器
var config = require('config');
var ethers = require('ethers');
var providers = require('ethers').providers;
var network = providers.networks.rinkeby;
var infuraProvider = new providers.InfuraProvider(network);
var etherscanProvider = new providers.EtherscanProvider(network);
var fallbackProvider = new providers.FallbackProvider([
infuraProvider,
etherscanProvider
]);
var provider = providers.getDefaultProvider(network)
var contract_provider = config.get('contract_provider');
var contract_address = config.get('contract_address');
var contract_abi = config.get('contract_abi');
var account_private_key = config.get('account_private_key');
var account_address = config.get('account_address');
var crm_url = config.get('crm_url');
var wallet = new ethers.Wallet(account_private_key, provider);
var contract = new ethers.Contract(contract_address, contract_abi, wallet);
var provider_contract = new ethers.Contract(contract_address, contract_abi, provider);
var overrideOptions = {
gasLimit: 250000,
nonce: 0,
value: ethers.utils.parseEther('1.0')
};
exports.check_health = function(req, res) {
console.log('started event');
contract.events.onlogAddressChange = function(purchaser, value, amount) {
console.log('started event1');
console.log("purchaser:" + purchaser);
console.log("value:" + value);
console.log("amount:" + amount);
};
};
I have waited for longer than an hour after triggering the event and still nothing.触发事件后我已经等了一个多小时,但仍然没有。
I do not know what I'm doing wrong.我不知道我做错了什么。
Can you please help?你能帮忙吗?
So it turned out I missed something in the doc.所以结果我在文档中遗漏了一些东西。
The event watcher has to be all lower case even if function is CamelCase:即使函数是 CamelCase,事件观察器也必须全部小写:
Only change needed is instead of onlogAddressChange I should have onlogaddresschange只需要更改而不是 onlogAddressChange 我应该有 onlogaddresschange
exports.check_health = function(req, res) {
console.log('started event');
contract.events.onlogaddresschange = function(purchaser, value, amount) {
console.log('started event1');
console.log("purchaser:" + purchaser);
console.log("value:" + value);
console.log("amount:" + amount);
};
};
Thanks谢谢
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.