在Firebase中,如何查询最近的10个子节点?

天美时

childByAutoId()用来养育我的孩子。每个孩子看起来像:

{
    user_id: 1
}

我想获取最近添加的最后10个,按时间DESC排序。最简单的方法是什么?

杰伊

答案是,您需要使用一些逆逻辑,并且还将每个节点内的时间戳记键:值对存储为负值。我省略了user_id:1,以保持答案更干净。

这是Firebase的结构

"test" : {
    "-KFUR91fso4dEKnm3RIF" : {
      "timestamp" : -1.46081635550362E12
    },
    "-KFUR9YH5QSCTRWEzZLr" : {
      "timestamp" : -1.460816357590991E12
    },
    "-KFURA4H60DbQ1MbrFC1" : {
      "timestamp" : -1.460816359767055E12
    },
    "-KFURAh15i-sWD47RFka" : {
      "timestamp" : -1.460816362311195E12
    },
    "-KFURBHuE7Z5ZvkY9mlS" : {
      "timestamp" : -1.460816364735218E12
    }
  }

这就是将其写到Firebase的方式;我只是使用IBAction作为按钮来写出几个节点:

let testRef = self.myRootRef.childByAppendingPath("test")

let keyRef = testRef.childByAutoId()

let nodeRef = keyRef.childByAppendingPath("timestamp")

let t1 = Timestamp

nodeRef.setValue( 0 - t1) //note the negative value

以及读取它的代码

    let ref = self.myRootRef.childByAppendingPath("test")
    ref.queryOrderedByChild("timestamp").queryLimitedToFirst(3).observeEventType(.ChildAdded, withBlock: { snapshot in
        print("The key: \(snapshot.key)") //the key
    })

我声明了一个小函数来返回当前的时间戳

var Timestamp: NSTimeInterval {
    return NSDate().timeIntervalSince1970 * 1000
}

和输出

The key: -KFURBHuE7Z5ZvkY9mlS
The key: -KFURAh15i-sWD47RFka
The key: -KFURA4H60DbQ1MbrFC1

如您所见,它们的顺序相反。

注意事项:

  1. 将时间戳记写为负值
  2. 在使用.queryLimitedToFirst而不是last进行阅读时。

关于这一点,您也可以像往常一样读取数据并将其添加到Array中,然后对降序排列的数组进行排序。这会在客户端上花费更多的精力,如果您有10,000个节点,可能不是一个好的解决方案。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何获取NodeList中每个节点的第一个子节点的值?

来自分类Dev

如何将两个查询合并到一个子查询中

来自分类Dev

如何在firebase函数中的一个子节点上的写触发器上从数据库中读取任何数据?

来自分类Dev

如何返回用 XSLT 中另一个子节点的数据修改的子节点?

来自分类Dev

在XSLT中,如何根据另一个子节点的值显示一个子节点的值

来自分类Dev

如何在 vbscript 中到达元素 XML 的第二个子节点?

来自分类Dev

在jsTree中打开一个子节点

来自分类Dev

在jsTree中打开一个子节点

来自分类Dev

如何检查一个子查询是否是Oracle SQL中另一个子查询的子集?

来自分类Dev

如何从 Groovy readyAPI 中另一个子值偏好的父级获取子节点值

来自分类Dev

如何使用原子查询更新猫鼬中另一个子文档中的一个子文档?

来自分类Dev

如何使用原子查询更新猫鼬中另一个子文档中的一个子文档?

来自分类Dev

如何在android中从Firebase获取子节点的子节点?

来自分类Dev

如何使用beautifulsoup将具有多个子节点的父节点和子节点信息提取到一个数据帧中?

来自分类Dev

如何通过xpath获取节点的第一个子节点之前的文本?

来自分类Dev

如何编写LINQ查询以保留最近的10个条目

来自分类Dev

我如何通过另一个子节点从父节点获取子节点内文

来自分类Dev

如何在子查询聚合中的最近时间记录的另一个表中查找记录

来自分类Dev

如何在DB2中将日期列表与另一个子查询联接

来自分类Dev

如何使用Swift在Firebase中查询最近的用户?

来自分类Dev

如何使用XSLT删除根节点并使第一个子节点成为新的根节点?

来自分类Dev

如何在 Firebase for Android 中获取根节点的子节点

来自分类Dev

xslt中第一个子节点之前和最后一个子节点之后的字符

来自分类Dev

选择一个子查询

来自分类Dev

加入2个子查询

来自分类Dev

使用XPath获取节点的每个子节点的第一个子节点

来自分类Dev

如何将Cypher查询分解为2个子查询?

来自分类Dev

多级查询从第二个子查询中获取值以驱动父元素

来自分类常见问题

如何使用querySelector检索div的第一个子元素同级节点?

Related 相关文章

  1. 1

    如何获取NodeList中每个节点的第一个子节点的值?

  2. 2

    如何将两个查询合并到一个子查询中

  3. 3

    如何在firebase函数中的一个子节点上的写触发器上从数据库中读取任何数据?

  4. 4

    如何返回用 XSLT 中另一个子节点的数据修改的子节点?

  5. 5

    在XSLT中,如何根据另一个子节点的值显示一个子节点的值

  6. 6

    如何在 vbscript 中到达元素 XML 的第二个子节点?

  7. 7

    在jsTree中打开一个子节点

  8. 8

    在jsTree中打开一个子节点

  9. 9

    如何检查一个子查询是否是Oracle SQL中另一个子查询的子集?

  10. 10

    如何从 Groovy readyAPI 中另一个子值偏好的父级获取子节点值

  11. 11

    如何使用原子查询更新猫鼬中另一个子文档中的一个子文档?

  12. 12

    如何使用原子查询更新猫鼬中另一个子文档中的一个子文档?

  13. 13

    如何在android中从Firebase获取子节点的子节点?

  14. 14

    如何使用beautifulsoup将具有多个子节点的父节点和子节点信息提取到一个数据帧中?

  15. 15

    如何通过xpath获取节点的第一个子节点之前的文本?

  16. 16

    如何编写LINQ查询以保留最近的10个条目

  17. 17

    我如何通过另一个子节点从父节点获取子节点内文

  18. 18

    如何在子查询聚合中的最近时间记录的另一个表中查找记录

  19. 19

    如何在DB2中将日期列表与另一个子查询联接

  20. 20

    如何使用Swift在Firebase中查询最近的用户?

  21. 21

    如何使用XSLT删除根节点并使第一个子节点成为新的根节点?

  22. 22

    如何在 Firebase for Android 中获取根节点的子节点

  23. 23

    xslt中第一个子节点之前和最后一个子节点之后的字符

  24. 24

    选择一个子查询

  25. 25

    加入2个子查询

  26. 26

    使用XPath获取节点的每个子节点的第一个子节点

  27. 27

    如何将Cypher查询分解为2个子查询?

  28. 28

    多级查询从第二个子查询中获取值以驱动父元素

  29. 29

    如何使用querySelector检索div的第一个子元素同级节点?

热门标签

归档