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

Node.js 在MEAN stack应用程序中成功更新后,如何显示最新/更新的值?,node.js,angular,mean-stack,Node.js,Angular,Mean Stack,我正在尝试更新我的MEAN stack应用程序中的记录 下面是我的一些更新代码: 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']

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

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

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'])上面的代码将路由到显示记录的页面

下面是我导航到
业务
路线时运行的代码:

 ngOnInit() {
    this.bs
      .getBusinesses()
      .subscribe((data: Business[]) => {
        this.businesses = data;
      });
}
有时在更新后,会显示新的/更新的值

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


有人能告诉我为什么更新后才会显示最新的值吗?

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

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
      ;
    });
}
这保证在更新完成之前不会进行导航