我在// No conversion: T1 is char, T2 is int
Add<char, int>('c', 2)
上部署了一个smart contract
,其中包含一个getter函数:
Kovan
如果我通过web3调用该函数,则会在控制台上获得以下输出,这很好!!
function getOrderStatus(uint _orderId) public view returns(bool shipped, bool arrived, bool payed) {
return (orders[_orderId].shipped, orders[_orderId].arrived, orders[_orderId].payed);
}
但是,如果我尝试通过Result {
'0': false,
'1': false,
'2': false,
shipped: false,
arrived: false,
payed: false }
转发返回的对象以提供它,例如通过API,我在浏览器上得到以下输出:
callback function
唯一的区别是在以下代码的末尾代替了[object Object]
-> console.log(returnValue)
:
callback(returnValue)
然后通过function getOrderStatus(_orderId, callback) {
contractABI.methods.getOrderStatus(_orderId).call()
.then(returnValue => callback(returnValue));
}
Express
答案 0 :(得分:1)
如果您的getOrderStatus()
函数是这样的:
function getOrderStatus(_orderId, callback) {
contractABI.methods.getOrderStatus(_orderId).call()
.then(returnValue => callback(returnValue));
}
...那么您的结果在returnValue
中,对吗?如果再按上述方式调用callback
函数,那么第一个参数就是您的数据。
在您的路由中,您正在使用第一个参数的error
参数调用回调,所以我想应该是这样的:
app.get('/api/getOrderStatus', function(req, res) {
orderId = req.query.orderId;
getOrderStatus(orderId, function(data, error) { // <--- changed order of parameters
if (!error) {
res.json(data);
} else {
res.send(error);
}
});
});
希望有帮助...