表达router.get()函数SyntaxError

时间:2014-05-10 22:33:31

标签: javascript json node.js express

我试图创建一个从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:意外的令牌。

为什么我收到此错误?

1 个答案:

答案 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