res.json在回调函数中不起作用

res.json not working inside callback function

本文关键字:不起作用 函数 回调 json res      更新时间:2023-09-26

我目前正在处理一个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);

帐户变量默认恢复为其初始值 []

我认为这可能是一个关闭问题,但我不确定。

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

您在第二个回调中覆盖了 RES