问题标签 [rxfire]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1990 浏览

firebase - 如何使用 rxfire 和 rxjs(或查询)加入两个 Firestore 查询

目标很简单:使用 、 和 react 本机库连接两个rxjsfirestorerxfire查询rnfirebase

我已经阅读了多个关于加入查询的教程12,但它们都因不同的错误而失败。

或者,

如何成功加入两个 Firestore 查询 (OR)?

0 投票
2 回答
590 浏览

firebase - 从 Observable 的动态数组中将 Observables 组合成单个 Observable?

摘要:本质上我需要类似from Users where usergroupIds in [1,3,5].

给定usergroupIds$发出一组组 ID[1,3,5]

我想通过useridsin联合所有用户usergroupIds并组合 userIds (distinct)

这是我想出的:

users$每次更改时退订和重新订阅似乎是错误的?

是否可以users$在不每次都在订阅中创建它的情况下在 RxJS 中完全表达?

更新: 在@FanCheung 的帮助下:

但是,由于 usersObservable 一次发出一组用户,因此 combineUsers$ 会产生类似的结果[[userA, userB], [userB, userC], [userA, userD]],我不介意对订阅进行额外处理:

但是,有没有办法以某种方式将 的结果展平combinedUsers$,然后执行distinct运算符?

0 投票
1 回答
148 浏览

rxjs - 将 catchError 与 RxFire firestore collectionData 一起使用时遇到问题

我希望能够响应对 collectionData 调用的错误。我添加了一个 catchError 但它永远不会被调用。事实上,collectionData 发出一个没有元素的结果。

使用 collectionData 处理错误的正确方法是什么?

0 投票
1 回答
6636 浏览

firebase - 错误:尝试上传大图像文件时找不到存储/对象

尝试使用 RxFire 在 Google Cloud Storage 中上传大图像文件时出现错误:storage/object-not-found。

他们说在桶中找不到图像,但是当我检查时,我看到了!

我用小图像(可能是 100kb ......)进行了测试,效果很好。

但是尝试使用> 500kb的图像,不起作用......

预期结果:上传使用大图像

实际结果:错误

0 投票
0 回答
125 浏览

firebase - 在 RxFire 中使用 switchMap 和内部 observables 时如何避免冗余下载数据?

我有一些 RxFire 代码可以侦听 Firestore 集合查询(表示channels),并且对于每个结果,侦听 Realtime Database ref 以获取文档(表示该通道中的消息)。

我遇到的问题是每次 Firestore 查询更改时都会重新下载实时数据库文档,即使它们用于未更改的路径/引用。

这是一些伪代码:

想象以下场景:

  • 查询最初发出3 个Firestore 通道文档
  • Observables 是为这 3 个通道的相应实时数据库 refs 创建的,它们发出它们的消息文档
  • 添加了一个与原始查询匹配的新 Firestore 文档,该查询现在发出4 个通道文档
  • Realtime Database 之前的 observable 被销毁,并为现在的4个通道创建新的,重新下载并发出之前3已经拥有的所有数据。

显然这并不理想,因为它会导致实时数据库上的大量冗余读取。在这种情况下,最佳做法是什么?请记住,当一个通道被删除时,我想销毁相应的 observable,它switchMap已经这样做了。

0 投票
1 回答
737 浏览

javascript - 如何根据文档中的参考 ID 合并和观察 Firestore 中的两个集合?

我正在StencilJS使用 Google Firestore 后端创建一个应用程序(无框架),并且我想尽可能地使用RxFireRxJS库来简化数据访问代码。如何将来自使用参考 ID 的两个不同集合的数据组合成一个可观察的流数据?

我已经阅读并尝试了几个在线示例,每个示例都使用具有不同嵌套复杂性级别的运算符的不同组合。https://www.learnrxjs.io/似乎是一个很好的资源,但它没有提供对我有意义的业务线示例。这个问题非常相似,也许唯一的区别是使用 RxFire 的一些翻译?还在看那个。只是为了比较,在 SQL 中,这将是一个SELECT带有INNER JOIN引用 ID 的语句。

具体来说,我有一个集合Games

和一个集合Game Sessions

我想观察一个合并集合Game SessionswheregameId本质上是替换为Game.name.

我目前有game-sessions-service.ts一个功能来获取特定用户的会话:

而且我已经尝试过使用pipeand的各种变化mergeMap,但我不明白如何使它们正确地组合在一起。我想建立一个接口GameSessionView来表示合并的数据:

可能,我只是停留在一种标准化的思维方式中,所以我愿意接受有关管理数据的更好方法的建议。我只是不想有太多的重复来保持同步。

0 投票
0 回答
311 浏览

rxjs - 如何将 RxJS BehaviorSubject 与 Sapper SSR 一起使用?

如果我使用标准的 Sapper 入门程序:

我有“巨大的成功”。在我的 Svelte 应用程序中,我使用 rxfire 来查询我的数据库,所以有一个包含初始值的 RxJS BehviourSubject,一旦加载了数据库信息,它就会更新。这在 Svelte 中效果很好,但 Sapper SSR 版本会阻塞。

如果我按如下方式更改示例 Sapper 应用程序:

我明白了:

作为 Svelte 接管并正确渲染页面之前的初始渲染。

为什么我不能在 Sapper 中使用 BehviorSubject?

0 投票
1 回答
72 浏览

google-cloud-firestore - RxJs 有没有可能解决这种数据透视表问题

我是 RxJs 的新手。是否有可能解决这种类型的数据透视表问题。

假设我有一个包含任意数量项目的流。

  • 每个项目都是 0 到 999 之间的数字。

  • 我想从这个流中制作一张桌子。一个有 10 列的表。

  • 项目的列号等于项目除以 10。因此数字 654 将转到第 6 列。

因为我们有随机数量的项目并且因为数字以随机顺序到达,所以列将具有不同的高度。

如何对流进行操作以一一生成表的行以显示表?

更新

使用 Fan Cheung 解决方案(如下所述),很容易使用 RxJs 生成列。但是是否也可以随后使用 RxJs 生成行(行数组)以便能够呈现如下所示的表格?

数据透视表结果

柱子有不同的高度。

0 投票
2 回答
363 浏览

rxjs - 使用 Svelte / RxJs / RxFire 订阅文档。如何更新订阅

我在下面的代码中使用了派生商店。这感觉像是一个奇怪的构造,因为我只将派生构造用于动态 $session 依赖项并获取 normData。但不是 $norm。我只使用一次 $norm 来启动派生商店。

尽管如此,它似乎工作正常。但是如果 $session 发生变化,我必须更新订阅。是否可以在不先取消订阅的情况下更新 RxFire / RxJs 订阅?

更新:我可以使用派生商店的设置和返回选项来更改真正的 $norm Svelte 商店中的 $norm。下面的代码在我自己的答案中。

但真正的问题是:我可以更新订阅吗?更改订阅而不取消订阅?

0 投票
1 回答
86 浏览

arrays - 如何将发出数组的可观察对象转换为单独发出数组每个值的可观察对象?

我正在使用 RXFire 和 RXJS。

返回

我想要的是一个可观察的返回

我尝试使用 from() 和 toArray() 的组合(即将 observable 转换为普通数组并返回到一个一个发出每个文档的 observable),但 toArray() 只创建一个发出数组的 observable,不是一个实际的数组。我需要一个与 toArray() 相反的操作。获取一个发出数组的 observable 并将其转换为一个单独发出每个值的 observable。

我怎么做?


编辑:

我也尝试过做类似的事情

但它存储订阅者,而不是新的 observable。=(