我有Angular 7-8项目的后端是Node.JS,我找不到一个如何检查我的记录是否在数据库中成功插入或更新的解决方案。
这是我的service.ts文件
UpdateData(data, id) {
try {
return this.http.post(this.baseurl + "/update/" + id, data)
.subscribe(result => console.log(result));
} catch (err) {
console.log("-------Error occurred update posting----" + err);
this.handleError(err);
}
}
在调用此服务函数后,我想检查component.ts中的插入/更新是否成功完成。
发布于 2020-01-30 02:25:39
这可以在subscribe方法中完成,如下所示:
return this.http.post(this.baseurl + "/update/" + id, data)
.subscribe(result => console.log(result),
(error) => {
// error logic here
},
() => {
// request success logic here
});
但是,如果您想检查组件中的错误/成功,您不应该订阅您的服务,并在您的组件中执行实际订阅,如下所示:
服务:
return this.http.post(this.baseurl + "/update/" + id, data);
在你的component.ts中
this.serviceInstance.UpdateData(data, id).subscribe(result => console.log(result),
(error) => { /* error logic */ }, () => { /* success logic */})
发布于 2020-01-30 02:44:06
this.http.post(this.baseurl + "/update/" + id, data).subscribe(result => {
if (result.status == "SUCCESS") {
console.log(result)
} else {
this.dataService.toster('Please try again later: somthing went wrong', "error")
}
}, err => {
this.dataService.toster('Please try again later: somthing went wrong', "error")
})
}
Dataservice.ts
import { BehaviorSubject } from 'rxjs';
export class dataService {
public tosterData = new BehaviorSubject<any>([]);
toster(data, status) {
const obj = {
message: data,
status: status
}
this.tosterData.next(obj);
}
发布于 2020-01-30 02:31:01
class MyService {
public UpdateData(data, id) {
return this.http.post(this.baseurl + "/update/" + id, data);
}
}
然后
订阅错误回调
class MyComponent {
public InsertRecord(data, id) {
this.myService.UpdateData(data, id).subscribe({
next: result => {
// show success
},
error: err => {
// show fail
}
});
}
}
-或者--
异步等待使用try catch
class MyComponent {
public InsertRecord(data, id) {
try {
const result = await this.myService.UpdateData(data, id).toPromise();
// show success
} catch (err) {
// show fail
}
}
}
https://stackoverflow.com/questions/59973323
复制相似问题