节点js中的数据未更改

时间:2019-07-30 04:54:53

标签: mysql node.js angular

我正在使用angular,node和mysql。 我有一个简单的应用程序,我正在其中添加,更新一些数据。每当我添加/更新任何数据时,我都希望它也能反映列表网格中的更改。我正在使用弹出窗口进行添加/更新。因此在添加或更新后,我调用了我的通用函数,该函数向我提供了数据列表,但我收到了响应304,并且未在网格中显示更改,因此为了克服304,我使用了app.disable(' etag');在节点js中,状态为200。但是仍未显示更改,但是当我手动刷新页面时,我可以看到更改。

另外,当我在执行操作后立即检查网络中的数据时,它也保留了旧值

Node Js

app.post("/addcity", function(req, res) {
    d = req.body;
    var con = mysql.createConnection(connectionString);
    con.connect(function(err) {
        if (err)
            throw err;
        var sql = "INSERT INTO tbl_city(city_name,state_id)  VALUES('" + d.city_name + "'," + d.state_id + ")";
        console.log(sql);
        con.query(sql, function(err, result) {
            if (err)
                throw err;
            res.send(result);
        })
    })
})

角度代码

PostData(addNewForm: NgForm) {
    var object = {
        "city_name": addNewForm.value.city_name,
        "state_id": addNewForm.value.state_id
    }
    this.service.addCity(object).subscribe();
    this.modalRef.hide();
    this.getAllCities(); // this still gives old values even new City is added in database
}

请帮助我摆脱困境。

预先感谢

更新

getCities() : Observable<any[]>{
        var details = this.http.get(`${this.apiUrl}/cities`);
        return forkJoin([details]);
    }

1 个答案:

答案 0 :(得分:1)

您正在异步调用两个请求,这就是在数据库中添加城市时的原因。 this.getAllCities()获取尝试使用的旧城市列表。

 PostData(addNewForm: NgForm) {
        var object = {
            "city_name": addNewForm.value.city_name,
            "state_id": addNewForm.value.state_id
        }
        this.service.addCity(object).subscribe(
          (data)=> {
                this.modalRef.hide();
                this.getAllCities();
            }
        ); 
    }