【发布时间】:2019-12-07 10:10:39
【问题描述】:
我正在使用 Angular、Node 和 MySQL。我有一个简单的 crud 应用程序,我在其中添加、更新一些数据。每当我添加/更新任何数据时,我都希望它能够反映列表网格中的变化。
我正在使用弹出窗口进行添加/更新。因此,在添加或更新后,我调用了我的通用函数,它为我提供了数据列表,但我得到了响应 304,并且更改未显示在网格中。因此,为了克服 304,我在 Node.js 中使用了app.disable('etag'),这给了我状态 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]);
}
【问题讨论】:
-
你能不能显示getAllCities()函数,这个问题可能是因为你得到结果后没有访问服务器
-
@TheLawliet94 更新了我的问题 getAllCities()。这是命中 api,它为我提供了我可以在网络选项卡中看到但具有旧值的城市列表。但是当我刷新页面时,它也给了我最新添加的城市
-
您可以尝试将您的代码更新为 PostData(addNewForm:NgForm) { var object = { "city_name":addNewForm.value.city_name, "state_id":addNewForm.value.state_id } this.service。 addCity(object).subscribe((result) => { this.modalRef.hide(); this.getAllCities(); }, (err) => { }); }
-
检查是否有效