【问题标题】:Update request (PUT) timeout on Sequelize with Axios使用 Axios 在 Sequelize 上更新请求 (PUT) 超时
【发布时间】:2020-04-10 17:43:53
【问题描述】:

我有这个 Axios 函数,它使用 Sequelize 和 MariaDB 在 Express 上调用 API。

 export async function updateUser(values) {
        const TOKEN = 'Bearer ' + getToken();
    let axiosConfig = {
      headers: {
        'Content-Type': 'application/json;charset=UTF-8',
        "Access-Control-Allow-Origin": "*",
        'Authorization': TOKEN
}
};

 await axios.put('https://myapi.com/users', values, axiosConfig)
    .then((res) => {
      if (res.status === 200) {
       console.log(res.data)
      } else {
        const error = new Error(res.error);
        throw error;
      }     

})
.catch((err) => {
  console.log("AXIOS ERROR: ", err);
})
  }

在后端服务器上我们有这个:

 var express = require('express');
    const User = require('./model/User');
    var cookieParser = require('cookie-parser');
    const UserController = require('./components/userController');
    const verifyToken = require("./middle/verifyToken");
    var bodyParser = require('body-parser')
    var cors = require('cors');




    var app = express();
    app.use(cors());
    app.use(express.json());
    app.use(bodyParser.json())
    app.use(cookieParser());

    //Ruta inicial (Backend)
    app.get('/', (req, res) => {
      res.sendFile('index.html');
    });

    app.use((req, res, next) => {
      res.header('Access-Control-Allow-Origin', '*');
      res.header('Access-Control-Allow-Headers', 'Authorization, X-API-KEY, Origin, X-Requested-With, Content-Type, Accept, Access-Control-Allow-Request-Method');
      res.header('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, DELETE');
      res.header('Allow', 'GET, POST, OPTIONS, PUT, DELETE');
      next();
    });

    app.listen(4000, '0.0.0.0');

app.put('/actualitzar/',verifyToken,Accidents_basicController.update);


app.put('/users/actualitzar',UserController.update);
    app.get('/users',verifyToken,UserController.list);

我在两个 sequelize 控制器上复制了相同的请求结构,一个 PUT 请求是 200 OK,另一个在每次调用时都超时。这是更新请求的 Sequelize 控制器。

controllers.update = async (req, res) => {

  const data = await User.update({
    username: req.body.username,
    password: bcrypt.hashSync(req.body.password, *),


  },{
    where: { id: req.body.id}
  })


  .then( function (data){
    return data;
  })
  .catch(error => {
    return error;
  })

  res.json({ success:true, data: data, message: "Updated successful"});

}

有人发现问题了吗?

【问题讨论】:

    标签: node.js json reactjs axios sequelize.js


    【解决方案1】:

    好的,我找到了解决方案。发送到后端的请求没有更改密码,并且从 bcrypt 返回了尝试加密一个空字符串。我通过处理 req.body.password 是否未定义来解决它。

    干杯!

    【讨论】:

      猜你喜欢
      • 2018-12-28
      • 2019-05-20
      • 2022-12-21
      • 2019-02-21
      • 2021-05-26
      • 2020-03-24
      • 2021-04-28
      • 1970-01-01
      • 2023-03-12
      相关资源
      最近更新 更多