我需要有关Firebase查询的帮助。我现在正在使用AngularFire2。
我几天来一直在努力。阅读每个文档,观看每个YouTube视频,并询问很多人,但我无处可去......
我的Firebase结构是这样的:
ROOT
jobs
KYLigf4dFBvTTstR1Wy
id: "1"
customer: "Jeff F"
description: "Repair a chair"
KYLigACCViJVQffEoRl
id: "2"
customer: "Quick G"
description: "Install a light bulb"
KYLigSQasdCR3XfQ8WN
id: "3"
customer: "Justin S"
description: "Do everything for everyone"
KYLiddsfdsgWCKhjoiB
id: "4"
customer: "Heather D"
description: "Have a baby"
所以我需要获取最高ID。然后我需要使用下一个id向列表中添加一个新条目。在这种情况下,它将是5
。就是这样,这就是我所需要的。我正试着去做我的头发。
我已经尝试了一百万种不同的方式,但问题出现在我尝试使用push()
时,一切都崩溃了,所以我找不到合适的路径去这里。
我想另一种说法是,我想从Firebase中提取最高ID,然后将其保存到随之变化的变量中。然后我可以在需要获取最新ID时访问该变量 - 因为数字将始终在变化。
答案 0 :(得分:2)
一种可能的解决方案是创建跟踪下一个ID的第二个节点。
插入新作业时,请使用对nextJobId节点的更新来跟进插入以增加ID。这将简化检索下一个ID的需要。
请注意,使用Firebase时,数据结构会被非规范化。可以创建额外的节点以使读取更快。
ROOT
jobs
KYLigf4dFBvTTstR1Wy
id: "1"
customer: "Jeff F"
description: "Repair a chair"
KYLigACCViJVQffEoRl
id: "2"
customer: "Quick G"
description: "Install a light bulb"
KYLigSQasdCR3XfQ8WN
id: "3"
customer: "Justin S"
description: "Do everything for everyone"
KYLiddsfdsgWCKhjoiB
id: "4"
customer: "Heather D"
description: "Have a baby"
nextJobId: 5 // Create an index that provides the next Id.
答案 1 :(得分:1)
我们对传统的id如1,2,3更加舒服,因此向后弯腰试图找到生成它们的方法。但是,创建传统ID的需求为您创造了一个复杂的问题。
Firebase奇怪的自动生成键实际上是为解决您的问题而设计的。它们具有递增id的功能,即它们告诉您创建的日期顺序,并且还有效地提供UUID之类的唯一性。
重要的是,它们允许多个离线的客户仍然生成非常可能的按时间排序且唯一的ID。
他们看起来并不奇怪,他们神奇地能够在没有互联网连接的情况下生成 。
生成它们的过程,
.push
是纯粹的客户端操作,可以在您未连接到网络时在浏览器中运行(例如)。它不向数据库发送任何内容。
与此相关的是,可以随意生成和丢弃firebase密钥而不会受到惩罚,您可以根据需要生成任意数量的密钥:只有当您实际将内容写入密钥时才会在数据库中实际发生任何事情
他们来自预先连接的时代。 我正在考虑教我的宝贝女儿算上Firebase Id而不是......