Angular & AngularFire 5 从文档中检索数据
Angular & AngularFire 5 Retrieve Data From Document
我在用什么
- Angular 5
- Angular火5
- Firebase 和 Firestore
我想要实现的目标
我目前正在使用 Google Firebase 的新 Firestore 创建新应用,同时学习 angular。我的应用当前创建了一个名为 Links 的集合,并创建了一个带有 自定义 ID 的新文档,该文档是在用户添加 link 时生成的并且是短url,在该文件中,有4个字段:
- uid
- url
- 短url
- 点击次数
我希望应用程序查询 url 字段中文档中的数据。
到目前为止我有什么
我已经创建了正确文档的路径:
linkCollection: Observable<{}>;
constructor(private afs: AngularFirestore, private router: Router) {
this.path = this.router.url.replace('/','');
afs.collection('Links').doc(this.path).valueChanges();
}
我被困在哪里
这可能是一个简单的解决方案,但我不确定如何获取 url 字段。我拥有的代码能够检索文档,我在另一部分中使用类似的方法来检索所有想法并使用 *ngFor 显示数据,但我不确定如何在 ts 文件而不是模板中执行此操作。
以下是将文档作为 Observable 读取并在组件模板中使用其数据时应遵循的基本模式。
linkRef: AngularFirestoreDocument<any>;
link: Observable<any>;
path: string;
constructor(private afs: AngularFirestore, private router: Router) {}
ngOnInit() {
// 0. this works, but there's probably better ways to get the ID
this.path = this.router.url.replace('/','');
// 1. make a reference
this.linkRef = this.afs.collection('links').doc(this.path)
// 2. get the Observable
this.link = this.linkRef.valueChanges();
}
然后在您的 HTML 中,您可以解开 observable 并显示 URL 属性。
{{ (link | async)?.url }}
或者,可以通过在 TS 中的某处手动订阅来解包,但您也应该在 NgOnDestroy 期间取消订阅以避免内存泄漏。
this.link.subscribe(data => console.log(data) )
我在用什么
- Angular 5
- Angular火5
- Firebase 和 Firestore
我想要实现的目标
我目前正在使用 Google Firebase 的新 Firestore 创建新应用,同时学习 angular。我的应用当前创建了一个名为 Links 的集合,并创建了一个带有 自定义 ID 的新文档,该文档是在用户添加 link 时生成的并且是短url,在该文件中,有4个字段:
- uid
- url
- 短url
- 点击次数
我希望应用程序查询 url 字段中文档中的数据。
到目前为止我有什么
我已经创建了正确文档的路径:
linkCollection: Observable<{}>;
constructor(private afs: AngularFirestore, private router: Router) {
this.path = this.router.url.replace('/','');
afs.collection('Links').doc(this.path).valueChanges();
}
我被困在哪里
这可能是一个简单的解决方案,但我不确定如何获取 url 字段。我拥有的代码能够检索文档,我在另一部分中使用类似的方法来检索所有想法并使用 *ngFor 显示数据,但我不确定如何在 ts 文件而不是模板中执行此操作。
以下是将文档作为 Observable 读取并在组件模板中使用其数据时应遵循的基本模式。
linkRef: AngularFirestoreDocument<any>;
link: Observable<any>;
path: string;
constructor(private afs: AngularFirestore, private router: Router) {}
ngOnInit() {
// 0. this works, but there's probably better ways to get the ID
this.path = this.router.url.replace('/','');
// 1. make a reference
this.linkRef = this.afs.collection('links').doc(this.path)
// 2. get the Observable
this.link = this.linkRef.valueChanges();
}
然后在您的 HTML 中,您可以解开 observable 并显示 URL 属性。
{{ (link | async)?.url }}
或者,可以通过在 TS 中的某处手动订阅来解包,但您也应该在 NgOnDestroy 期间取消订阅以避免内存泄漏。
this.link.subscribe(data => console.log(data) )