首页 > 解决方案 > 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});
  }

这是chrome控制台上的错误 在此处输入图像描述

标签: node.jscors

解决方案


根据您的方法映射,您的 URL 应该包含要被映射模板识别的 ID。服务器无法识别 URL 模板并返回 404。要生成有效的 URL 并将数据传递给请求,您应该将 UI 上的方法更改为

this.http.put<IWorkOrders>(this.BASE_URL + '/updateworkorder/' + workOrder.id, workOrder);

推荐阅读