无法从fetch获取所有响应数据

时间:2018-05-03 18:54:33

标签: node.js reactjs express

所以我试图在会话中存储一些信息,供以后使用。但是当我在反应中取出它时,它并不会全部回来。尽管get路由包含所有数据。

我的思维过程在服务器端,当用户登录时在会话中存储他们的id。然后我将有一个/userinfo路由转储我在json中需要的所有数据。然后,我可以获取/userinfo路由并获取响应中的数据。我的代码如下:

继承登记的邮政编码,我console.log验证会话是否已修改。它是。

User.authenticate(req.body.logemail, req.body.logpassword, function (error, user) {
   if (error || !user) {
     var err = new Error('Wrong email or password.');
     err.status = 401;
     return next(err);
  } else {
     req.session.userId = user._id;
     console.log(req.session);
     return res.redirect('/');
   }
 });

然后我有这条路:

app.get('/userinfo', (req, res)=>{
  res.json(req.session);
});

如果我只是去localhost:3000/userinfo json看起来像:

{
  "cookie": {
    "originalMaxAge": null,
    "expires": null,
    "httpOnly": true,
    "path": "/"
  },
  "userId": "blahblahblah"
}

所以UserID确实存在。 但是,当我最终在以下内容中获取它时:

fetch('http://localhost:3000/userinfo')
  .then(res => res.json())
  .then(data => console.log(data));

我回来的只是饼干。我没有 UserId 。我也尝试过将UserId添加到cookie中,只是为了看看它是否正常工作,同样我只是得到了简单的cookie。

1 个答案:

答案 0 :(得分:0)

我自己解决了这个问题,我甚至都没想过,但我正在向客户提出请求,所以当我通过fetch()提出请求时 至 app.get('/userinfo', (req, res)=>{ res.json(req.session); });

服务器正在返回存储在客户端上的会话,该会话尚未使用userId进行更新。所以我需要从服务器端返回会话数据,而不是从客户端请求返回。

我的解决方案是在服务器端创建和维护User对象,当我需要访问用户数据时,从用户对象中获取它。