首页 > 解决方案 > axios 发帖请求一直挂断

问题描述

我正在使用 async/await 语法在 React.js 中使用 axios 发出发布请求。该请求只是将新用户插入到 mysql 数据库中的表中。该请求正在通过并且正在插入数据,但是,我的 POST 请求处于待处理状态。

这是反应的前端代码:

export const register = (first_name, last_name, email, password) => async (
  dispatch
) => {
  try {
    dispatch({
      type: USER_REGISTER_REQUEST,
    });

    const user = {
      first_name,
      last_name,
      email,
      password,
    };

    const { data } = await axios.post("api/users/insertdata", user);

    dispatch({
      type: USER_REGISTER_SUCCESS,
      payload: data,
    });

    dispatch({
      type: USER_LOGIN_SUCCESS,
      payload: data,
    });

    localStorage.setItem("userInfo", JSON.stringify(data));
  } catch (error) {
    dispatch({
      type: USER_REGISTER_FAIL,
      payload:
        error.response && error.response.data.message
          ? error.response.data.message
          : error.message,
    });
  }
};

这是 node.js 和 express 的后端代码:

  router.post("/insertdata", (req, res) => {
  const { first_name, last_name, email, password } = req.body.first_name;

  let sql = `INSERT INTO users (first_name, last_name, email, password) VALUES (?,?,?,?);`;

  connection.query(
    sql,
    [first_name, last_name, email, password],
    (err, result) => {
      if (err) {
        console.log(err);
      } else {
        res.status(201);
        console.log("insert complete");
      }
    }
  );
});

标签: node.jsreactjsexpressasync-awaitaxios

解决方案


解决方案最终只是我的一个简单的疏忽。在后端,我在向 mysql 发出 post 请求后没有返回任何数据。请参阅下面的 if/else 语句。

  router.post("/insertdata", (req, res) => {
  const { first_name, last_name, email, password } = req.body.first_name;

  let sql = `INSERT INTO users (first_name, last_name, email, password) VALUES (?,?,?,?);`;

  connection.query(
    sql,
    [first_name, last_name, email, password],
    (err, result) => {
      if (err) {
        console.log(err);
      } else {
        res.send(req.body);
        res.status(201);
        console.log("insert complete");
      }
    }
  );
});

推荐阅读