2016-01-16 4 views
1

В настоящее время я работаю над конечной точкой API.res.json не работает внутри функции обратного вызова

При размещении данных в конечную точку /authenticate, я использую функцию plaidClient.getAuthUser, чтобы получить информацию об учетной записи пользователя, а затем я пытаюсь использовать res.json вернуть данные учетной записи.

После запуска этого:

accounts = JSON.stringify(res.accounts); console.log('accounts: ' + accounts);

Я успешно могу видеть массив словарей, содержащих информацию об учетной записи.

Однако, когда я пытаюсь использовать res.json({accounts: accounts}), я получаю ошибку:

res.json({accounts: accounts}); ^ TypeError: undefined is not a function

Когда я пытаюсь запустить res.send(accounts) вместо res.json, я получаю ту же ошибку:

res.send({accounts: accounts}); ^ TypeError: undefined is not a function

Вот мой код:

var public_token = ""; var access_token = ""; var accounts = [];

app.post('/authenticate', function (req, res) { 
    console.log('post'); 
    public_token = req.body.public_token; 
    console.log(public_token); 
    console.log('plaid: ' + app.client); 
    server.client.exchangeToken(public_token, function (err, res) { 
     console.log('exchange'); 
     if (err) { 
      //Handle Error 
      console.log('exchange-error'); 
     } 
     else { 
      //We now have exchanged our Plaid access token. 
      //Store it somewhere persistent 
      //Access token is used to make API calls 
      access_token = res.access_token; 
      console.log('access_token: ' + access_token); 

      server.client.getAuthUser(access_token, function (err, res) { 
       if (err != null) { 
        //handle error 
        console.log('authorization-error'); 
       } 
       else { 
        // Our response will hold an array of accounts for this user, containing account names, 
        // balances, account and routing numbers. 
        accounts = JSON.stringify(res.accounts); 
        console.log('accounts: ' + accounts); 

        //Return account data 
        res.json({accounts: accounts}); 
       } 
      }); 
     } 
    }); 
    res.contentType('application/json'); 
    res.send(accounts); 
}); 

}; `

Кроме того, при запуске окончательных 2 строки:

res.contentType('application/json'); res.send(accounts);

Счет переменных по умолчанию обратно в это начальное значение []

I думаю, что это может быть проблемой закрытия, но я не уверен.

ответ

1
app.post('/authenticate', function (req, res) { 
    console.log('post'); 
    public_token = req.body.public_token; 
    console.log(public_token); 
    console.log('plaid: ' + app.client); 
    server.client.exchangeToken(public_token, function (err, ***res***) { 

вы перезаписаны Рез в вашем втором обратном вызове

+1

Спасибо, я ценю помощь. – Beezebrown