问题标签 [firebase-realtime-database]

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 投票
0 回答
361 浏览

firebase - firebase 的关系数据结构(最适合性能?)

我正在构建一个具有以下层次结构的消息传递应用程序:

Organization -> Chat Rooms -> Threads -> Messages

对于在firebase中构建关系实体的最佳方法,我有点困惑。文档说扁平化您的数据,但如果数据扁平化,则必须搜索每条记录才能找到标识符,这似乎更昂贵。这样做最经济或“正确”的方式是什么?以下是我最初的建议。箭头表示父->子关系。id 下面的下划线表示生成的标识符(使用 firebase .push())。

这是新提出的结构。这两者之间的主要区别在于关系实体如何位于子级而不是父级。

使用新提出的结构,uri 结构可能看起来像这样:

欣赏有关最佳方法的任何见解。谢谢

0 投票
1 回答
681 浏览

javascript - 以编程方式向 angularfire 添加字段并与 Firebase 同步

作为一个新用户,我在使用 AngularJS、AngularFire 和 Firebase 时遇到了分布式代码库的问题。我试图经常使用 Factory() 来重用代码并遵循测试的最佳实践。但是,我无法将数据添加到我的 AngularFire 对象和 Firebase。

给定以下工厂:

我可以得到我的项目,我可以处理数据等等......但是,我似乎无法向对象添加元素,并将其添加到 Firebase。虽然当我调用 AddQuantity/MinusQuantity 时屏幕会更新数量,但我无法将此数据与 Firebase 链接并更新那里的记录。

来自 HTML 的片段

我可以看到添加到元素中的 ItemList 对象的 Quantity 字段,但即使我使用按钮从 ng-repeat 传递“item”元素(这似乎是正确的参考),我也看不到数据同步到火力基地。

0 投票
1 回答
1592 浏览

firebase - Firebase REST streaming for multiple users

I have a server that needs to receive real time updates from Firebase, for multiple users, where each user grants Oauth access to his Firebase data to my app.

My server is implemented using Firebase REST Streaming, based on Server Sent Events.

I need to know if there is a way to multiplex Firebase data pertaining to multiple users on a single stream.

I would like to be able to set up the stream with Oauth tokens pertaining to multiple users, and to subsequently receive real time updates pertaining to the multiple users on the same stream.

Otherwise, it seems that I need to maintain a separate stream per Oauth token, which seems to be non-scalable.

I think Twitter have a Site Streams feature like what I am looking for in their API, implemented via an envelope that indicates the user the message is targetted to.

Does Firebase support anything similar?

0 投票
1 回答
347 浏览

android - 如何检测停止在 Firebase 中侦听的客户端?

假设我有 3 个客户端正在侦听某个 firebase 根目录的更改。每个客户端都将自己表示为根目录(或地图)中的用户。我想删除失去连接或关闭客户端应用程序(即停止侦听)的用户。我如何检测何时发生这种情况并处理更改?

0 投票
1 回答
103 浏览

javascript - 如果 firebaseRef 设置为新值,是否有必要调用 .off() ?

如果我做:

然后我firebaseRef像这样重置:

以前的.on(...)侦听器会被自动删除还是应该.off()在将 firebaseRef 设置为之前调用new Firebase(newUrl)

0 投票
4 回答
122668 浏览

android - Android Firebase,只需获取一个子对象的数据

我一直在寻找一种在 Android Firebase 中获取一个子对象数据的方法。

我发现了诸如Firebase 检索子 Android 之类的东西。所有解决方案都建议使用“ChildEventListener”,但是我现在需要获取这些数据,而不是在移动、删除、更新等时获取。

我的数据作为字符串保存在 https://.firebaseio.com/users//creation 中。我认为必须有一些简单的方法来访问它而无需做太多,因为如果我将确切的 URL 复制到我的浏览器,我可以看到:'creation: "2015/05/31 21:33:55"'就在我的“Firebase Forge 仪表板”中。

我如何在没有监听器的情况下访问它?

0 投票
1 回答
8051 浏览

javascript - Firebase中如何根据多个条件进行查询?

我有以下结构:

我正在尝试做类似的事情:

SELECT * FROM users WHERE (activities = 'horse' OR activities = 'bike') AND age >= 21

我可以请教一下吗?如果我没有正确地构造数据,我还能在那里得到一些提示吗?

编辑:jsfiddle

0 投票
2 回答
8378 浏览

android - Firebase:onDisconnect 事件何时触发?

我正在为我的 android 应用程序使用 Firebase 后端。我想为我的聊天建立一个用户存在系统。为此,我采用了 Firebase Guide 中的模式

问题是我不知道什么时候会触发onDisconnect事件?!

每次我打开应用程序时,我都会将 TRUE 写入节点“ users/joe/connections ”,但是当我关闭应用程序时,什么都不会发生。当我关闭 WIFI 时,布尔参数也不会被删除。onDisconnect-event 仅在我强制停止我的应用程序或重新安装此应用程序或其他我无法确定时触发。

因此,据我了解,我必须手动处理此类事件:

1)关闭我的应用程序;

2)关闭WiFi;

3)也许是别的东西

在我的应用程序中创建 Presence 功能?但是什么时候触发onDisconnect-event呢?

0 投票
3 回答
7044 浏览

java - 如何将父节点的值作为字符串获取?

Firebase 映像

所以在上面的数据结构中,我想获取值Aprilia Caponord 1200(如图所示)。我有对Aprilia(根节点)的 Firebase 引用,我可以获得所有键/值对数据。

这是我的代码

很明显,我可以获得具有键/值关系的子节点的所有值。但我无法具体获取父节点的名称。那么如何获取String格式中父节点的值呢?

如果我 print child.getValue().toString(),我会得到 JSON 值,但我对解析 JSON 不感兴趣。是否有任何特定的方法来获取父节点值?

0 投票
2 回答
7373 浏览

javascript - 如何在 Firebase 中写入非规范化数据

我已经阅读了有关结构化数据的 Firebase 文档。数据存储很便宜,但用户的时间却不是。我们应该针对 get 操作进行优化,并在多个地方写入。

那么我可能会存储一个列表节点和一个列表索引节点,两者之间有一些重复的数据,至少是列表名称。

我在我的 javascript 应用程序中使用 ES6 和 promise 来处理异步流,主要是在第一次数据推送后从 firebase 获取 ref 键。

如何确保数据在所有地方保持同步,知道我的应用程序仅在客户端上运行?

为了进行完整性检查,我在我的承诺中设置了一个 setTimeout 并在它解决之前关闭了我的浏览器,实际上我的数据库不再一致,保存了一个额外的索引而没有相应的 list

有什么建议吗?