Angular Firestore 中有 .get() 吗?

Posted

技术标签:

【中文标题】Angular Firestore 中有 .get() 吗?【英文标题】:Is there a .get() in angular firestore? 【发布时间】:2020-08-22 20:47:20 【问题描述】:

我看到有一个 .valueChanges() 和 .snapshotChanges() 都监听数据库中的变化,但如果我只想检索一次数据怎么办? 我注意到在 .valueChanges() 或 .snapshotChanges() 末尾添加 .pipe(take(1)) 可以工作,但它与 firebase firestore 在 admin sdk 和 mobile sdk for android 中提供的 .get() 函数相同吗? ios

我在做什么

 this.items = this.itemCollection.valueChanges().pipe(take(1));

我期待什么

 this.items = this.itemCollection.get();

PS:我是新手。

【问题讨论】:

据我所知,get() 调用似乎存在:github.com/angular/angularfire/blob/…。运行这段代码有什么问题? 你能给我指出任何文件吗?如何使用它来检索文档列表? 【参考方案1】:

非反应方式

如果您正在寻找一种不使用 react 的方法,您可以在 ref 上调用 get() 方法而不是集合项。

this.itemCollection.ref.get().then((querySnap) => 
     //use your data here
     console.log(querySnap.docs);
);

React 方式

this.itemCollection.get() 返回一个可以订阅的 QuerySnapshot 类型的 observable

this.itemCollection.get().subscribe((querySnap) => 
 console.log(querySnap.docs)
);

【讨论】:

以上是关于Angular Firestore 中有 .get() 吗?的主要内容,如果未能解决你的问题,请参考以下文章

Mergemap Angular + firestore 集合

了解 Firestore 查询

在 VScode 中找不到 @angular/fire/firestore 模块错误

在控制台中获取“timestampsInSnapshots 设置现在默认为 true”的 firestore 错误

在 Firestore 中使用 Angular 删除集合中的文档

Angular Firestore 映射文档到对象