首页 > 解决方案 > Node JS:如何在后端的 res.json(data) 之后从前端检索数据?

问题描述

我的后端将 res.staus(200).json({ somedata )} 发送到我的前端,但我无法在前端检索数据。

我的后端:

exports.login = (req, res, next) => {
  //===== Check if user exists in DB ======
  const { user_email, user_password: clearPassword } = req.body;
  let sql = `SELECT user_password, user_id FROM users WHERE user_email=?`;
  db.query(sql, [user_email], async (err, results) => {
    console.log(results);
    console.log(req.body);
    if (err) {
      return res.status(404).json({ err });
    }

    // ===== Verify password with hash in DB ======
    const { user_password: hashedPassword, user_id } = results[0];
    try {
      const match = await bcrypt.compare(clearPassword, hashedPassword);
      if (match) {
        console.log("match ... user_id : ", user_id);

        // If match, generate JWT token
        res.status(200).json({
          test: 'iyu',
          user_id: user_id,
          token: jwt.sign({ userId: user_id }, "TOOOKEN", {
            expiresIn: "24h",
          }),
        });
      } else {
        console.log("not match");
      }
    } catch (err) {
      return res.status(400).json({ err: "une erreur" });
    }
  });
};

前端:

 const login = async (e) => {
    e.preventDefault();
    await POST(ENDPOINTS.USER_LOGIN, userLogin);
    // await GET(ENDPOINTS.USER_LOGIN)
    fetch("http://localhost:4200/api/auth/login")
      .then((response) => response.json())
      .then((data) => {
        console.log(data);
      });
  };

此登录功能将数据发送到我的后端,然后后端使用第一个 POST 请求检查数据库中是否存在用户。如果是,后端以 json 格式发送一些我不想放在用户本地存储中的数据,所以在 POST 请求之后,我使用 GET 方法执行另一个请求以检索从后面发送的 json 数据,但是我有一个 404 错误。

我怎样才能让我的数据由后面发送?

标签: node.jsreactjs

解决方案


似乎问题出在 SQL 语句上,在 if 语句下,您可以像这样打印错误:

if(err) {
    console.log(err);
}

请告诉我结果


推荐阅读