我有这个 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 Controller 上复制了相同的请求结构,一个 PUT 请求是 200 OK,另一个在每次调用时超时。这是更新请求的 Sequelize Controller 。
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"});
}
有人看到问题了吗?
最佳答案
好的,我找到了解决方案。发送到后端的请求没有更改密码,并且返回了从 bcrypt 到 crypt 空字符串的尝试。如果 req.body.password 未定义,我通过处理来解决它。
干杯!
关于node.js - 使用 Axios 在 Sequelize 上更新请求 (PUT) 超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61129825/