如何在 MEAN stack 应用程序成功更新后显示最新/更新的值?

How to display latest / updated value after successful update in MEAN stack app?

我正在尝试更新我的 MEAN 堆栈应用程序中的记录。

下面是我的一些更新代码:

updateBusiness(person_name, business_name, business_gst_number) {
    this.route.params.subscribe(params => {      
      this.bs.updateBusiness(person_name, business_name, business_gst_number, params['id']);
      this.router.navigate(['business']);
    });
}

上面的代码更新记录成功,因为我可以在执行此代码后搜索mongodb。

上面的 this.router.navigate(['business']); 代码路由到显示记录的页面。

这是我导航到 business 路线时的代码 运行:

 ngOnInit() {
    this.bs
      .getBusinesses()
      .subscribe((data: Business[]) => {
        this.businesses = data;
      });
}

更新后有时会显示 new/updated 个值。

但有时会显示较旧的值。但是,当我刷新页面时,会显示更新后的值。

谁能告诉我为什么更新后有时只显示最新值?

您并没有按顺序执行操作,因为更新是一个异步操作。您正在启动更新,然后在更新完成前立即导航。要解决此问题,请订阅组件中的更新并在完成后导航:

updateBusiness(person_name, business_name, business_gst_number, id) {

    const obj = {
      person_name: person_name,
      business_name: business_name,
      business_gst_number: business_gst_number
    };

    return this //return the observable
      .http
      .post(`${this.uri}/update/${id}`, obj);
}

组件:

updateBusiness(person_name, business_name, business_gst_number) {
    this.route.params.subscribe(params => {      
      this.bs.updateBusiness(person_name, business_name, business_gst_number, params['id'])
             .subscribe(res => this.router.navigate(['business'])); // subscribe and navigate when done
      ;
    });
}

这保证在更新完成之前不会进行导航。