首页 > 解决方案 > Angular 8 & Firebase,添加新项目后观察数据

问题描述

我现在拥有的:

两种型号:

用户.ts

公司.ts

我需要 User 只绑定一个公司,因此当用户注册时,它会自动在firestore表上注册一个新公司。

这张图更好地解释了我现在正在做的事情:

在此处输入图像描述

这就是我启动程序的方式(在 register.component.ts 的用户注册方法中):

this.companyService.addCompany(this.companies, this.user);

这就是 company.service.ts 的工作方式:

export class CompanyService  {
  companiesCollection: AngularFirestoreCollection<Company>;

  constructor(private afs: AngularFirestore,
    private userService: UserService) {
    this.companiesCollection = this.afs.collection('companies',
      ref => ref.orderBy('company_name', 'asc'));
  }

  addCompany(company: Company, user: User) {
    this.companiesCollection.add(company).then(docRef => {
      user.company_id = docRef.id;
      user.uid = localStorage.getItem('userUID');
      this.userService.addUser(user);
    });
  }
}

我认为最好按照以下方式做一些事情:

addCompany(company: Company): Observable<Company> {
  return this.companiescollection.add(company); // THIS CODE DOESNT WORK
}

然后使用 register.component.ts 上的订阅方式,如:

this.companyService.addCompany(this.companies).subscribe(companyRef => { this.user.company_id = companyRef.id; this.userService.add(this.user); });

我该怎么做?

标签: angulartypescript

解决方案


你只需要将该承诺转换为 Observable,对吗?如果你试试:

import {from} from 'rxjs';
...
addCompany(company: Company): Observable<Company> {
  return from(this.companiescollection.add(company));
}

那不应该为你做吗?


推荐阅读