查询Firebase的最高ID,然后添加到它

时间:2016-12-07 02:42:02

标签: angular firebase firebase-realtime-database angularfire2

我需要有关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时访问该变量 - 因为数字将始终在变化。

2 个答案:

答案 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)

使用Firebase奇怪的“KYLigf4dFBvTTst ...”键作为您的ID

我们对传统的id如1,2,3更加舒服,因此向后弯腰试图找到生成它们的方法。但是,创建传统ID的需求为您创造了一个复杂的问题。

Firebase奇怪的自动生成键实际上是为解决您的问题而设计的。它们具有递增id的功能,即它们告诉您创建的日期顺序,并且还有效地提供UUID之类的唯一性。

重要的是,它们允许多个离线的客户仍然生成非常可能的按时间排序且唯一的ID。

可以离线生成Firebase密钥

他们看起来并不奇怪,他们神奇地能够在没有互联网连接的情况下生成

生成它们的过程,

.push

是纯粹的客户端操作,可以在您未连接到网络时在浏览器中运行(例如)。它向数据库发送任何内容。

与此相关的是,可以随意生成和丢弃firebase密钥而不会受到惩罚,您可以根据需要生成任意数量的密钥:只有当您实际将内容写入密钥时才会在数据库中实际发生任何事情

放开1,2,3

他们来自预先连接的时代。 我正在考虑教我的宝贝女儿算上Firebase Id而不是......