我的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中检入插入/更新是否在调用此服务函数后成功完成。
答案 0 :(得分:1)
这可以在如下的subscription方法中完成:
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 */})
答案 1 :(得分:1)
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);
}
答案 2 :(得分:0)
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
}
}
}