【问题标题】:How to fix [object Object] response from authorization which should be showing the data?如何修复应该显示数据的授权的 [object Object] 响应?
【发布时间】:2019-09-23 03:57:19
【问题描述】:

我的问题是我在获取数据时得到一个空响应 [object Object]。 response.json() 与响应的 [object Object] 相同,但使用 response.text() 我从受保护的路由 (passport.authenticate) 获取文本中的 req.user 数据。授权顺利,它找到了用户,我没有得到“未经授权”,在我的秘密路线中,我通过 req.user 获得了用户对象。我只是在获取这个用户时遇到了麻烦,所以我可以单独获取这些用户值,就像当它是 JSON 时一样。通常,response.json 为我完成了这项工作,但不是在这里。我错过了什么吗?

我尝试过解析数据、字符串化数据,但他们似乎没有解决它。我想我错过了一些东西,但我只是没有看到它。

app.get('/profile', passport.authenticate('jwt', { session: false }),
    function(req, res) {
        res.status(200).send(req.user);
    }
);

{...}
const getToken = await AsyncStorage.getItem('jwt');
                const response = await fetch('http://ip:3000/profile', {
                    method: 'GET',
                    headers: {
                        Accept: 'application/json',
                        Authorization: `Bearer ${getToken}`
                    }
                });
                const data = await response;
                console.log('Response: ' + data);
{...}

预期结果是 fetch 中的响应向用户显示,或者基本上让 .json 向用户显示。但它没有向用户显示,而是给出了 [object Object]。

【问题讨论】:

    标签: node.js react-native jwt passport.js


    【解决方案1】:

    你应该 JSON.stringify 响应

    console.log('Response: ' + JSON.stringify(data));
    

    【讨论】:

    • 老实说,我试过这个,但我想我在尝试这个时搞砸了。所以我对数据进行了字符串化,制作了 response.json() 并且我可以访问用户数据!谢谢你的回答,这让我更进一步:)
    【解决方案2】:

    object-object 输出出现在输出未解析或嵌套在内部以致解析器无法读取的情况下。

    要解决这个问题,您必须将输出转换为字符串,然后显示它们。

    大概有两种方式:

    1. console.log('data',JSON.Stringify(data));

    2. console.log('data',data.toString())

    【讨论】:

      【解决方案3】:

      更简单,将data 作为第二个参数传递。

      console.log('Response: ', data);
      

      【讨论】:

      • 也许更简单,但这确实是偏好,不是吗?我更喜欢用 + 来做,所以我可以在代码中看到它属于 this 并且它没有分开。
      猜你喜欢
      • 2018-04-03
      • 2020-06-16
      • 2021-09-25
      • 2016-01-13
      • 1970-01-01
      • 1970-01-01
      • 2019-09-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多