res.json不能在callback函数里面工作

我目前正在开发一个API端点。

将数据发布到端点/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);

账户variables默认回到它的初始值[]

我认为这可能是一个封闭的问题,但我不知道。

  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***) { 

你在第二次callback中覆盖了水库