如何检查记录是否更新或插入成功 角度



我有 Angular 7-8 项目后端是 Node.JS,我找不到有关如何检查我的记录是否在数据库中成功插入或更新的解决方案。

这是我的服务.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);
}
}

我想在我的组件.ts中检查插入/更新是否在调用此服务函数后成功完成。

这可以在订阅方法中完成,如下所示:

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);

在您的组件中.ts

this.serviceInstance.UpdateData(data, id).subscribe(result => console.log(result),
(error) => { /* error logic */ }, () => { /* success logic */})
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);
}
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
}
});
}
}

--或--

异步等待使用尝试捕获

class MyComponent {
public InsertRecord(data, id) {
try {
const result = await this.myService.UpdateData(data, id).toPromise();
// show success
} catch (err) {
// show fail
}
}
}

最新更新