Не могу получить все данные ответа из выборки - PullRequest
0 голосов
/ 03 мая 2018

Итак, я пытаюсь сохранить некоторую информацию в сеансе для дальнейшего использования. Но когда я получаю его в ответ, не все возвращается. Несмотря на маршрут получения всех данных.

Мой мыслительный процесс происходит на стороне сервера, когда пользователь входит в систему, сохраняя свой идентификатор в сеансе. Тогда у меня будет маршрут /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 голосов
/ 06 мая 2018

Решил проблему сам, я даже не думал об этом, но я делаю запрос от клиента, поэтому, когда я делаю запрос через fetch() в app.get('/userinfo', (req, res)=>{ res.json(req.session); });

сервер возвращает сеанс, сохраненный на стороне клиента, который не был обновлен с помощью userId. Поэтому мне нужно возвращать данные сеанса со стороны сервера, а не из клиентского запроса.

Мое решение состоит в том, чтобы создать и поддерживать объект User на стороне сервера, и когда мне нужно получить доступ к пользовательским данным, извлеките их из объекта пользователя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...