Тайм-аут запроса на обновление (PUT) на Sequelize с Axios - PullRequest
0 голосов
/ 09 апреля 2020

У меня есть функция Ax ios, которая вызывает API на Express с Sequelize и MariaDB.

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

У меня одинаковая структура запроса, воспроизводимая на обоих контроллерах сиквелиза, и один запрос 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"});

}

Кто-нибудь видит проблему?

1 Ответ

0 голосов
/ 10 апреля 2020

Хорошо, я нашел решение. Запрос, отправленный на сервер, не изменил пароль, и это вернуло попытку bcrypt зашифровать пустую строку. Я решил это путем обработки, если req.body.password не определено.

Приветствия!

...