我正在使用AngularFire作为Angular11上firebase的API。
我的应用程序的域名是实时拍卖
理想情况下,我想做的是阅读所有文档,然后订阅每个文档以进行更改。
我目前的问题是我在firestore上的阅读次数。
我的收藏阅读将产生N次阅读。但订阅每个文档会产生额外的读取,因此默认情况下会有2N次读取,这似乎是不可避免的。
但我想这比在集合上留下订阅并在每次更新集合中的内容时接收N次读取要好。
因此,使用下面的示例代码,我对collection进行查询,然后对文档进行另一次查询。仅为复制而简化。
this.store.collection("users").valueChanges()
.pipe(
take(1),
concatMap(() => this.store.doc("user/1").valueChanges())
)
.subscribe(console.log(user));
然而,内部可见光将发射2次。
一次使用添加
,一次使用修改
快照更改类型。
所以我的问题是:
为什么我的内部可观测对象在初始订阅时连续发射两次,而在我看来它应该只发射一次。
如果这两个发出的都被算作是firest上的读取,这将产生3N个读取。
通过我在firestore监控页面上的测试,情况似乎是这样的,因为在400文档页面上,我在firestore上记录了大约1200次读取,并计入了定价。
>
是否有人对如何以更少的读取量更高效地检索数据提出建议?
我是否应该切换到RTDB,因为RTDB似乎提供了更为慷慨的10GB数据输出,这对我的读取量来说可能更好?
编辑:
所以我刚刚用AngularFireAPI测试了firebase RTDB。
像上面这样的示例代码将使内部observable只按预期发出1个值,并且每个项目更改1个值。这是意料之中的。
我仍然不清楚为什么fiRecovery实现会发出2个值,这两个值都算作读取并带走定价。
最终代码如下所示:
this.db.list<AuctionItem>(`auctions/1/items`)
.valueChanges()
.pipe(
take(1),
tap(items => this.itemsToRender = items),
mergeMap(items => [...items]),
mergeMap((item: AuctionItem) => this.db.object(`auctions/1/items/${item.id}`).valueChanges() as Observable<AuctionItem>),
)
.subscribe(change => {
// do work when item updates
})
仍然不知道为什么firestore没有像预期的那样为我工作。考虑使用部分firestore RTDB以实现最佳使用,因为即使有50k的空闲空间,firestore上的读取量也会很高。
这是我在你的情况下会做的:
侦听更改时,您只会对确实更改的文档再次收费,而不是您已经查询但没有获得任何更新的文档。
有关听众定价的更多详细信息,请观看此视频(尤其是3:16)
我写了一个逻辑,使用Spring反应器库来获取所有运算符,然后在异步模式下为每个运算符(分页)获取所有设备。 创建了一个通量来获取所有运算符,然后订阅它。 现在,对于每个运算符,我正在获取需要多个订阅才能获得设备mono的设备,该设备通过订阅MONO获得所有页面异步。 此代码工作正常。但我的问题是,从内部订阅mono是一个好主意吗?
我正在尝试实现一个使用可观察的发出更改的类。当对此可观察对象完成订阅时,我想发送一个启动/初始化事件。然后我想发送通常的事件。 例如假设我有两个不同的订户A和B。A和B在不同的时间开始订阅。如果是MyClass。getChanges()发出事件1、2、3、4和5。 如果A在事件1、2之间启动it订阅,则应接收以下事件:InitialEvent、2、3、4、5。 如果B在事件4和5之间启动it订阅,
说明 调用方法: $.f2eAct.yyue(el,options); 函数说明: Y阅功能,包含查询用户是否订阅,用户订阅,用户取消订阅 参数说明: 参数名 类型 说明 备注 el string DOM元素对象 必要 pcode int 订阅媒体的id 必要 gcode int 媒体用户分组id 必要 success function 查询是否订阅回调方法 无 confirm functio
订阅指过滤表(table)的规则,Canal 客户端发送给客户端订阅规则,那么服务端将会推送符合规则的表数据过来,采用正则匹配。 允许所有表:.\*\\\\..\*
物联网有很多设备,通过订阅设备的topic可以监听物联网设备接收到的消息。 请求方式: "|4|1|2|topic|\r" 参数: topic 设置订阅的topic,获取设备topic可参考教程 返回值: "|4|1|2|1|\r" 订阅成功 "|4|1|2|2|1|\r" topic订阅达到上限(一个OBLOQ最多订阅5个topic),订阅失败 "|4|1|2|2|2|\r" topic订阅失败
本文向大家介绍system.reactive 订阅/取消订阅可观察对象(IDisposable),包括了system.reactive 订阅/取消订阅可观察对象(IDisposable)的使用技巧和注意事项,需要的朋友参考一下 示例 订阅返回IDisposable: 当您准备取消订阅时,只需处置订阅即可: