我正在使用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]);
}
答案 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();
}
);
}