node.js - Angular Nodejs MySql CORS 问题
问题描述
这就是我在 nodejs 上启用 CORS 的方式。但是前端更新记录的请求似乎不起作用。但是获取、发布、删除命令有效。
app.use((req, res, next) => {//Middleware for CORS. Code to allow requests from any url
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Methods", 'GET, POST, OPTIONS, PUT, DELETE');
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept ");
next();
})
这是我在 Nodejs 上执行更新语句的方式
backend.put('/updateworkorder/:id', (req, res) => {
console.log(req.body);
let sql = "UPDATE workorders SET ? WHERE ?"
db.query(sql, [{accountNumber: req.body.accountNumber,
customerName: req.body.customerName,
packageName: req.body.packageName,
addons: req.body.addons,
campaignName: req.body.campaignName,
notes: req.body.notes,
entryDate: new Date(req.body.entryDate),
crew: req.body.crew,
postDate: new Date(req.body.postDate),
status: req.body.status
},
{id: req.body.id}], (err, result) => {
if (err) throw err;
// console.log(result);
res.send(result);
});
});
这是Angular中的调用部分
updateWorkOrder(workOrder) {
// console.log(workOrder.id);
let headers = new HttpHeaders();
headers.append('Content-Type' , 'application/json');
return this.http.put(this.BASE_URL + '/updateworkorder/' + workOrder.id, {headers: headers});
}
解决方案
根据您的方法映射,您的 URL 应该包含要被映射模板识别的 ID。服务器无法识别 URL 模板并返回 404。要生成有效的 URL 并将数据传递给请求,您应该将 UI 上的方法更改为
this.http.put<IWorkOrders>(this.BASE_URL + '/updateworkorder/' + workOrder.id, workOrder);