我在用户创建帐户时将令牌转移到用户的钱包。为此,我正在使用谷歌云功能。
在这里,在帐户创建事件中,令牌将被转移到该地址。我的云功能运行正常,但令牌传输功能未触发。这是代码-
const admin = require('firebase-admin');
const functions = require('firebase-functions');
var Web3 = require('web3');
admin.initializeApp(functions.config().firebase);
var web3 = new Web3(new
Web3.providers.HttpProvider("http://localhost:8545"));
var Personal = require('web3-eth-personal')
var personal = new Personal(Personal.givenProvider)
var ABI = [{'contract ABI'}]
var contract =new web3.eth.Contract(ABI, '0xF62E0..fd44fC931571ae957')
exports.newUser = (event, callback) => {
const triggerResource = event.resource;
web3.eth.personal.unlockAccount("0xc..9050f547", "password", 60, (unlock) => {
contract.methods.transfer('0x4..bB7d982D8A8632e', 2).
send({
from: '0xC3Fe4...0F547',
gas: 210000
}, (error, txhash) => {
if (!error && txhash) {
console.log(triggerResource);
}
});
})
callback();
};
我已将合同部署在专用网络上。
答案 0 :(得分:0)
您调用的send()
方法似乎是异步的,但是您已经在完成回调之前调用了它。要解决此问题,请将对callback()
的调用移至send()
完成后运行的代码块中:
exports.newUser = (event, callback) => {
const triggerResource = event.resource;
web3.eth.personal.unlockAccount("0xc..9050f547", "password", 60, (unlock) => {
contract.methods.transfer('0x4..bB7d982D8A8632e', 2).
send({
from: '0xC3Fe4...0F547',
gas: 210000
}, (error, txhash) => {
if (!error && txhash) {
console.log(triggerResource);
}
callback(error);
});
})
};
您将看到代码现在还将error
传递到回调中,这意味着它会显示在您的Cloud Functions日志中。