问题标签 [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 投票
1 回答
2160 浏览

javascript - Firebase:查询返回 null

我不明白为什么我对 Firebase 数据库的查询不起作用。我对此很陌生,并决定按照“简单教程”来读取数据。编写一个 JSON 对象很有效,很高兴看到这一点。另一方面,阅读开始让我生气。我唯一想做的就是阅读 1 个“记录”,其中电子邮件地址等于某个电子邮件地址。这些在用户数据库中是并且应该是唯一的。一旦我检索到用户,我就可以使用他的 UID(push(); 上自动生成的值)来做其他事情。因此,这是一个演示,我暂时不关心安全性,应用新创建的 Firebase 数据库的默认读写行为。任何人都可以从任何地方进行完全读写访问。

这是演示网站的代码,看看东西是否有效

这是有效的演示代码

这是我的代码,但返回 null,我不知道为什么

这是 /Users 的结构

为了阐明这种结构,“UID”直接位于用户下方。当 UID 展开时,我们会看到详细信息。

我的查询的预期结果是用户的一个 JSON 对象,该用户的名字是“Demo”,他的姓氏是“De Demoon”。

提前致谢

PS:我对 SQL 数据库比对 noSQL 更熟悉。我有点被迫使用最后一个,除了我看到 noSQL 数据库更有用、更强大,当我们有“预先计算的数据”时,可以存储在关系数据库中但总是需要通过相同的连接的数据以一种方式。将这些结果计算(连接)一次并将结果写入 noSQL 数据库,通过减少不必要的负载并将常用请求的数据集分组在一起,可以更快地查找。如果我对此有误,也请纠正我的看法。

0 投票
1 回答
4727 浏览

android - Firebase在Android的适配器中添加监听器

我在火力基地很新,我正试图绕过它。我有这个适配器,ValueEventListener每次创建它时都会注册到。如果我不分离它,当我旋转手机并且适配器在片段中被破坏/重建时,听众会加起来吗?还是 firebase 足够聪明,可以知道这个特定的侦听器已经存在?

PS:我试图在onPause使用它的片段的方法中取消注册这个监听器,但是firebase似乎正在删除我的缓存,所以片段旋转后需要一段时间才能再次获取数据,这在以前没有发生过。

0 投票
2 回答
1255 浏览

android - 我想使用 Firebase 提供的服务器时间戳设置计算优先级

我想使用 Firebase 提供的服务器时间戳设置孩子的优先级,ServerValue.TIMESTAMP

但我的情况是相反的。我想设置负数ServerValue.TIMESTAMP以根据时间将我的孩子移到顶部。是否可以在不使用本地时间戳的情况下在 Firebase 中执行此操作System.CurrentTimeInMillis()

我想做这样的事情:

0 投票
1 回答
10531 浏览

angularjs - 使用 Firebase .startAt() 和 .endAt() 查询日期范围的方法

我将 firebase 与 GeoFire 结合使用,效果很好,但我需要再进行一次查询,但我不确定应该如何完成。

这是我的 GeoFire/Firebase 查询:

这是我在 firebase 中的 json 数据库:

上面的 GeoFire/Firebase 查询返回 2 篇文章(但可能是 100 多篇文章),这是正确的。

我的问题:

如何扩展下面的 Firebase 查询,以便我可以根据一系列 articlePostDates 获取记录?例如,所有 GeoFire 返回的记录的发布日期都在2015/04/26 07:00:002015/04/26 16:00:00之间?我认为它与 .startAt() 和 .endAt() 相关,但我不确定如何。

谢谢你的建议。

0 投票
1 回答
471 浏览

json - Firebase 中的三向关系

在过去的几个月里,我一直在学习很多关于非规范化数据的知识,但我想知道在扁平化的架构世界中是否可以实现以下操作。我知道如何在 Firebase 中处理双向关系,但是三向关系呢?让我解释...

我的数据库中有 5 个项目servicesprovidersserviceAtProviderreviewsusers。我希望能够添加providersservices反之亦然。

我还希望 aprovider内部有一个特定页面service,并希望有链接到该特定服务的提供者的评论。页面 url 可能看起来像这样 ( site.com/serviceId/providerId)。评级是独一无二providerIdserviceId——你不能单独评价serviceIds 或providerIds。

我不知道如何去建立如此复杂的关系。我将如何加入该项目中的serviceIdand ?providerIdserviceAtProvider

这是我到目前为止所得到的:

我不知道如何创建该serviceAtProvider连接,或者我将如何访问一页上的service1.name, provider1.name, service1AtProvider1.rating, 。reviews.service1AtProvider1谁能解释如何做到这一点?

另外,有什么我应该遵循的最佳实践吗?

任何帮助表示赞赏。提前致谢!

更新

0 投票
1 回答
93 浏览

firebase - 我是否需要提取完整的用户列表才能从 Firebase 获取随机用户?

为简单起见,假设我有一个类似于以下内容的 Firebase 方案:

  • 用户列表
    • 用户 1
      • 年龄 - 22
      • 性别 - M
    • 用户 2
      • 年龄 - 26
      • 性别 - M
    • 用户 3
      • 年龄 - 20
      • 性别 - F

假设我想从该列表中获得所需年龄范围和所需性别的随机用户。现在我正在提取完整的用户列表,过滤掉不符合我偏好的用户,然后从客户端匹配的用户中随机获取一个用户。这对少数用户来说效果很好,但如果我有 10,000 个用户怎么办?

有什么方法可以在不下载所有用户的完整列表的情况下完成此操作,因为这非常占用带宽。使用关系数据库很容易只使用 where 子句,但由于我不能使用 Firebase,我假设我必须在客户端做所有事情,这意味着检索完整的数据列表。最小化带宽的正确方法是什么?

0 投票
1 回答
1557 浏览

android - FIrebase Java/Android createUser 失败

我正在尝试为 Firebase 用户创建和身份验证例程编写一个简单的测试,以便我可以测试我的 Firebase 安全设置。代码运行顺利,但未调用回调,并且在 Firebase 端未创建任何用户。

下面带有打印语句的输出是:

该代码使用 Firebase 类的 firebase-client-android-2.2.3.jar 文件,尽管我只是在 Mac OS 上将我的测试作为 java 应用程序运行。稍后这将进入一个 Android 应用程序,但我现在希望能够在我的 IDE 中运行它。非常感谢经验丰富的 Firebase 编码人员提供的任何见解。

0 投票
2 回答
863 浏览

android - 有没有办法对 Firebase 中的只读对象进行版本控制?

我正在开发一个跨平台的应用程序:web、android、iOS。我有几个对象旨在指定一些常量,例如有效状态。例如:

现在我已经发布了使用这个对象的客户端并且他们已经在野外了,但是我意识到这个对象不能满足我的需要并且它需要改变。现在我已经创建了一个这样的版本化对象:

现在的计划是留下 states 对象,只从新客户端中的 states2 获取额外的数据,但是留下那种遗留问题似乎真的很糟糕。所以对于这个问题:

1)有没有办法对 Firebase 提供的对象进行版本控制?

或者

2)我只是以不适合使用的方式使用 Firebase 吗?

或者

3) 有没有更好的方法在 Firebase 中构造这种只读数据?

0 投票
0 回答
2172 浏览

android - Firebase 正在服务中,将在将应用程序置于后台一段时间后停止工作

事情是这样的,我的应用程序有一个服务(扩展服务)负责建立套接字连接并使用 firebase 原生 android 框架监听传入的网络流量。这是它的样子

如您所见,onStartCommand 返回 START_NOT_STICKY,因此服务不会在我离开应用程序后立即被终止(在后台 - 中间按钮上)

以下是 AppHelper 的工作原理:

每个控制器向相应节点注册一个 firebase 侦听器,这是基类的外观

所以,这就是发生的事情。一切都很好,如果您将应用程序留在后台并返回它仍然可以工作,您甚至可以启动其他应用程序,锁定设备等。但是,如果您将应用程序留在后台足够长的时间(10 分钟左右),当您回来firebase不会响应。该应用程序不会崩溃,但它什么也不做,就像它处于离线状态一样。我猜有些东西正在被收集起来。但我不知道那可能是什么。

我试过这个

并在 firebase 断开连接时在用户的片段上显示一条消息。当我在 10 分钟后回到应用程序时,这条消息不存在(那个 firebase 已连接?)。

先感谢您!。

0 投票
2 回答
862 浏览

firebase - 在 Firebase 中设置用户自己的密钥

这个问题已经在这里问过了,但是由于 AngularFire 更新了他们的 API,提供的解决方案不再可用。

我正在做的是使用电子邮件/密码创建新用户帐户,将该用户存储在 Firebase 身份验证服务中,并将额外信息存储在数据库中。

但是,在身份验证中,用户的密钥为simplelogin:29,而在数据中,每个用户的哈希密钥为-JpwB9oUVkeT_XRdiX2V。我确实需要他们的钥匙是一样的。

下面是创建新用户的代码,使用 auth.$createUser 注册并在用户模型中存储额外信息。

它可以工作,但不是应该的方式,因为用户在身份验证和数据中的密钥仍然不同。