Как я могу получить ID пользователя, используя passport-jwt? - PullRequest
0 голосов
/ 29 августа 2018

Я пытаюсь получить userid и добавить его в функцию, которая запускается при запуске сервера узла. Я пытался axios и node-fetch отправить запрос GET и получить идентификатор, но он не работает. Я даже пытался app.get("/api/users/current")

какой ответ с объектом, который имеет идентификатор. Я что-то здесь упускаю? Спасибо

const userId = "";

module.exports = function mailUser(mailday) {
  console.log("Users fired");

  console.log(userId);



  // axios.get("http://localhost:5001/api/users/current")
  // .then((res) => {
  //   userId = res.id;
  //   console.log(UserId);
  // })
  // .catch((err) => {
  //   console.log(err);
  // });
  // console.log(userId);

  let deffered = Q.defer();

  Coworker.find({ user: userId }).exec((err, coworker) => {
    let coworkers = [];

    if (err) {
      deffered.reject(console.log("failed: " + err));
    } else {
      // Add all users coworkers
      for (let i = coworker.length - 1; i >= 0; i--) {
        coworkers.push(coworker[i]);
      }
      deffered.resolve(coworkers);
    }
    console.log(coworkers);
  });

  return deffered.promise;
};

1 Ответ

0 голосов
/ 30 августа 2018

Я думаю, что Вы перепутали две вещи:

  • В axios.get(...) Вы вызываете console.log(UserId), хотя ваша переменная называется userId с небольшим u в начале.
  • Чтобы использовать id из ответа axios, вам необходимо получить доступ к нему из res.data объекта, а не из res напрямую.

    axios.get("http://localhost:5001/api/users/current")
      .then((res) => {
        userId = res.data.id;
        console.log(userId);
      })
      .catch((err) => {
         console.log(err);
      });
    

Я предпочитаю использовать async/await с уничтожением объектов, поэтому это будет:

const fetchUserID = async () => {
  const { data: { id: userId } } = await axios.get("http://localhost:5001/api/users/current");
  return userId;
}

Так что в вашем коде для получения userId, вам просто нужно вызвать эту функцию.

...