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

Query Firebase for highest id, then add to it

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

一个可能的解决方案是创建第二个节点来跟踪下一个 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.

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

我们对 1、2、3 等传统 ID 都比较满意,因此竭尽全力寻找生成它们的方法。但是,创建常规 ID 的需要给您带来了一个复杂的问题。

Firebase 看起来很奇怪的自动生成密钥实际上是为了解决您的问题而设计的。它们具有递增 id 的特性,即它们告诉您创建的日期顺序,并且还有效地提供了像 UUID 一样的唯一性。

重要的是,它们允许多个客户端 离线 仍然生成很有可能的时间顺序和唯一 ID。

可以离线生成 Firebase 密钥

它们不仅看起来很奇怪,而且还可以神奇地生成无需互联网连接

生成它们的过程,

.push

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

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

放手1,2,3

他们来自预连接时代。 我正在考虑教我的小女儿在 Firebase Id 中计数...