Проблема получения возврата из API с Axios - PullRequest
0 голосов
/ 24 декабря 2018

Я пытаюсь получить токен с jsonwebtoken из моего API в компонент реагирования, но я не могу получить его со стороны клиента, однако, мне кажется, все на стороне сервера выглядит нормально.

API:

router.post("/api/user/login", async (ctx, next) => {
  var nickname = ctx.request.body.data.nickname;
  var password = ctx.request.body.data.password;
  var user = await db.collection("tmp_users").find({nickname: nickname}).toArray();
  var token = "";

  if (user.length > 0) {
    const hashPassword = user[0].password;
    bcrypt.compare(password, hashPassword)
    .then((res) => {
      if (res) {
        jwt.sign({ user: user}, "test", (err, res) => {
          console.log("token GOOD => ", res);
          ctx.body = res;
          return res;
        });
      }
    });
  }
  console.log("token FAILED => ", token);
  ctx.body = token;
  return token;
});

и здесь есть часть клиентской части с axios:

axios.post("/api/user/login", { data })
.then(res => {
  console.log("res =>", res);
  console.log("res data =>", res.data);
  console.log("res token => ", res.token);
  console.log("res data token =>", res.data.token);
});

вопрос: где я могу найти токен?на стороне сервера консоль журнала в порядке.но на стороне клиента я потерялся, я не могу его найти.

Может, я чего-то не понял?спасибо за помощь!

1 Ответ

0 голосов
/ 24 декабря 2018

Это не возвращает никакого значения, потому что вы возвращаете внутри обещание, которое является асинхронным.Я написал альтернативный подход, который библиотеки (bcrypt / jwt) обеспечивают для синхронной работы.

router.post("/api/user/login", async (ctx, next) => {
  var nickname = ctx.request.body.data.nickname;
  var password = ctx.request.body.data.password;
  var user = await db.collection("tmp_users").find({nickname: nickname}).toArray();
  var token = "";
  if (user.length > 0) {
    const hashPassword = user[0].password;
    const res = await bcrypt.compare(password, hashPassword);
    if (res) {
      const jwttoken = await jwt.sign({ user: user}, "test")
      console.log("token GOOD => ", jwttoken);
      ctx.body = jwttoken;
      return jwttoken;
    }
  }
  return new Error("Error");
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...