angular - 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); });
我该怎么做?
解决方案
你只需要将该承诺转换为 Observable,对吗?如果你试试:
import {from} from 'rxjs';
...
addCompany(company: Company): Observable<Company> {
return from(this.companiescollection.add(company));
}
那不应该为你做吗?
推荐阅读
- postgresql - 在 plsql - postgresql 中创建对象列表
- react-native - 在 react-navigation v3 中默认情况下,标题后退按钮不起作用
- javascript - 使用javascript在数组中添加元素的值而不使用const
- python - 将文本添加到轴间箭头
- c# - 如何复制与其他表(相关)中链接的数据的行并将它们作为新记录插入 - Linq C#
- python - 我们可以在垂直边缘检测图像中找到两个垂直边缘之间的关系/函数吗?
- c# - 如何在使用“SpecifiedPickupDirectory”作为传递方法发送电子邮件时在 AWS 上创建电子邮件文件
- php - 如何为这样的一对一关系建立雄辩的关系
- microcontroller - PIC uc 编程没有 MCLR 引脚
- node.js - Mongoose:使用其他模型的模式