【问题标题】:Axios post request keeps hanging upaxios 发帖请求一直挂断
【发布时间】:2023-03-27 20:07:01
【问题描述】:

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

这是react中的前端代码:

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");
      }
    }
  );
});

【问题讨论】:

  • 嗨 Keegan,在您发布的代码中,PUT 实现在哪里?我只能看到 POST 实现,根据您的评论,它运行良好。
  • 你好 Firmino,因为这个函数的目标只是创建一个新用户而不是更新现有用户的一部分,我正在使用 POST 请求。
  • 我也忘了提及如果我删除了 async/await 语法并使用 .then 和 .catch,它可以完美运行。
  • export const register = async (first_name, last_name, email, password) = (dispatch) => {} 是否有错误??? @KeeganAdams

标签: node.js reactjs express async-await axios


【解决方案1】:

解决方案最终只是我的一个简单疏忽。在后端,我在向 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");
      }
    }
  );
});

【讨论】:

    猜你喜欢
    • 2019-04-05
    • 2019-07-23
    • 2022-11-10
    • 2019-06-22
    • 2020-06-07
    • 2022-12-10
    • 2019-11-20
    • 1970-01-01
    • 2020-07-21
    相关资源
    最近更新 更多