问题标签 [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 回答
114 浏览

firebase - 我如何强制一个可观察的完成?

有点小众的问题,但我知道问题是什么,所以希望这里有人可以帮助我。这是 Observable/RXFire 问题,而不是 xstate 问题。

我有这台机器调用一个可观察的:

它应该工作的方式是机器在加载时调用 observable,然后一旦 obs 完成发出其值并调用 complete(),invoke.onDone 被调用并且机器转换到“加载”状态。

当我使用通过 complete() 调用创建的普通 observable 时,或者当我将 take(#) 添加到 .pipe() 的末尾时,转换工作。

但由于某种原因,来自 RXFire 的 collectionData() 的可观察数据没有发出“完整”信号……机器就坐在那里。

我尝试在末尾添加一个 empty() 并 concat() 对 observables 添加一个完整的信号到管道的末尾......但后来我发现 empty() 已被弃用并且它没有似乎无论如何都可以工作。

有一段时间我的头撞在墙上。任何帮助表示赞赏。


编辑:

解决方案:

我误解了 collectionData() 的目的。它是一个监听器,所以它不应该完成。我在圆孔里放了一个方钉。解决方案是重构 xstate 机器,所以我根本不需要调用 onDone。

尽管如此,还是感谢您的回答。


EDIT2:让它工作。

take(1) 可以在 concatAll() 之前调用。我想如果你先调用它,它会结束流,但事实并非如此。管道中的其他运算符仍然适用。所以我采取(1) 来获取单个数组,使用 concatAll() 将数组展平为单个对象的流,然后将该数据映射到触发 STORE 操作的新对象。然后 store 操作将数据设置为机器的上下文。

感谢大家的帮助!

0 投票
1 回答
121 浏览

firebase - redux-observable 和 rxjs 的史诗错误

我正在尝试创建一个使用 rxfire 从 Firestore 获取数据的史诗。在每次发出值时,都需要调度一个动作。我的代码如下所示:

但是,我收到了错误Actions must be plain objects. Use custom middleware for async actions.

据我了解,pipe操作员将我的值包装在一个 observable 中,这就是我收到错误的原因,但我不确定该怎么做才能只返回操作。我对 rxjs 还是有点陌生​​,所以非常感谢任何帮助。

0 投票
1 回答
195 浏览

javascript - RxFire 如何处理 firestore 查询

这个 js reduce 可以很好地处理查询结果:

但是当我使用 RxJs reduce 时,它​​停止工作。它与流结束有关,但是......但我不明白 RxFire / RxJs 如何处理流式 Firestore 查询结果:

更新这个工作正常,但是......:

0 投票
1 回答
76 浏览

javascript - 如何使用 RxFire 检查是否已在 Firestore 中创建文档

在我的 React 应用程序中,我想在更新我的 UI 之前检查后台 firebase 函数是否已在 Firestore 中创建了文档。因此,我使用 RxFire 中的 docData 函数来订阅特定的“即将从背景函数创建”文档中的更改:

问题是 userData.uid 总是返回“david”,不管在 Firestore 中创建的文档是什么。我究竟做错了什么?它似乎是从我在参考中设置的路径返回 uid,而不是在 firestore 中已经(或应该已经)创建的实际文档路径。当我将引用更改为查找“users/foo”时,userData.uid 仍然返回“foo”而不是 undefined 或通过错误返回。

在这种情况下,我可以改为查找 userData.name。这实际上是有效的,因为如果文档没有存储在 Firestore 中,我会得到“未定义”,如果有的话,我会得到“未定义”,但我希望上面的示例能够以类似的方式工作。

0 投票
3 回答
385 浏览

firebase - 带有firebase的工兵-未定义获取

运行时出现此错误npm run dev

我认为rxfire不会导入 fetch,所以我将此行添加到src/server.ts

错误仍然存​​在,有什么建议吗?我想我根本不需要添加这个。

我只是在src/ firebase.ts 文件中使用rxfire ,如下所示:

谢谢,
J

0 投票
1 回答
47 浏览

javascript - rxfire 订阅未在 componentdidmount 中触发

我正在使用 rxfire 将来自 firestore 的数据组合到 componentdidmount 中:

这段代码的问题是没有触发并且屏幕卡在加载组件上。如果我第二次加载屏幕就可以了。难道我做错了什么?我该如何解决

0 投票
2 回答
285 浏览

angular - 没有'new'就不能调用AngularFire Auth Persistence

我正在尝试使用以下代码在 angularfire 中持久化身份验证:

但是,无论setPersistence方法的位置如何,我总是会收到此错误:

我按照文档(https://firebase.google.com/docs/auth/web/auth-state-persistence)到了T;我究竟做错了什么?

我正在使用 Angular 13、Angularfire 7 和 Firebase 9。

0 投票
0 回答
38 浏览

reactjs - Rxfire 对象不允许将 firebase 引用作为参数

美好的一天,我正在尝试使用 rxfire 来组合多个 Firebase 数据源,下面的代码应该从实时数据库中流式传输“城市”列表,然后从 Cloud Storage 存储桶中检索它们的图像。我正在阅读官方文档,但使用实时数据库。使用 rxfire 对象方法时出现错误

我得到的编译错误

“参考”类型的参数不能分配给“查询”类型的参数。'ref.isEqual' 的类型在这些类型之间不兼容。类型 '(other: Query) => boolean' 不可分配给类型 '(other: Query | null) => boolean'。参数 'other' 和 'other' 的类型不兼容。输入“查询 | null' 不可分配给类型 'Query'。类型“null”不可分配给类型“Query”.ts(2345) const ref: FirebaseDatabaseTypes.Reference