我试图创建一个从JSON-RPC API返回JSON数据的路由。
我的代码:
router.get('/balance', function(req, res, client) {
res.json({
client.getBalance('*', 1, function(err, balance) {
if(err)
console.log(err);
else
console.log('Balance: ', balance);
});
});
});
它使用的是npm包node-litecoin。我已经要求它并创建了一个像这样的客户端var:
var client = new litecoin.Client({
host: 'localhost',
port: 9332,
user: 'myaccount',
password: 'mypass'
});
client.getBalance(' *',1,function(err,balance){ ^ SyntaxError:意外的令牌。
为什么我收到此错误?
答案 0 :(得分:1)
为什么我收到此错误?
因为client.getBalance('*', 1, function(err, balance) {
不能放在那里。
让我们仔细看看:
res.json({ ... });
{...}
此处表示object literal。 "内容"字面值必须是逗号分隔的key: value
对列表,例如
res.json({foo: 'bar'});
你在那里放了一个函数调用:
res.json({ client.getBalance(...) });
这无效。
如何让路由
'/balance'
输出client.getBalance()
功能?
看起来client.getBalance
是一个异步函数调用,因此将其返回值传递给res.json
也不会起作用。您必须将回调中得到的结果传递给res.json
:
router.get('/balance', function(req, res) {
client.getBalance('*', 1, function(err, balance) {
if(err)
console.log(err);
else
console.log('Balance: ', balance);
res.json(balance);
});
});
如果您不熟悉JavaScript的语法,建议您阅读MDN JavaScript Guide。