【问题标题】:Swift Firebase Query - No Results in SnapshotSwift Firebase 查询 - 快照中没有结果
【发布时间】:2018-03-21 01:54:59
【问题描述】:

我正在尝试通过“名称”值查询我们的 LCList 对象,如 in this image 所示。名称键就在对象的下一层。它的任何其他值都没有其他级别。

我用来查询的代码是:(记住 listsRef 指向 LCLList 对象)

listsRef.queryOrderedByKey()
        .queryStarting(atValue: name)
        .observeSingleEvent(of: .value, with: { snapshot in

此查询的快照返回时没有任何值。我也尝试按名称值对结果进行排序,结果相同。我检查了仅使用 queryOrderedByKey() 方法调用返回的值,它们与数据库中的值匹配。问题显然出在 .queryStarting(atValue:) 方法调用上。

我真的很困惑为什么这不起作用,因为指向我们的LCLUser object 的相同查询具有几乎相同的结构,确实得到了结果。这两个对象在上图中看到的“对象”目录中处于同一级别。

在这一点上的任何帮助将不胜感激。我确定我缺少一些简单的东西。

【问题讨论】:

    标签: ios swift firebase firebase-realtime-database


    【解决方案1】:

    该查询不适用于问题中显示的 Firebase 结构。

    您的查询如下,我在每一行都添加了注释,详细说明了每一行的作用

    listsRef.queryOrderedByKey()   //<- examine the key of each child of lists
            .queryStarting(atValue: name)   //<- does that keys' value match the name var
            .observeSingleEvent(of: .value, with: { snapshot in   //do it once
    

    你当前的数据看起来像这样

    Objects
       LCLLists
          node_x
             creator: "asdasa"
             name: "TestList3"
          node_y
             creator: "fgdfgdfg"
             name: "TestList"
    

    所以这里发生的事情是将名称 var(一个字符串)与每个不相等的键(一个字典)的值进行比较。字符串≠字典

        key                   value
    ["node_x": [creator: "asad", name: "TestList3"]
    

    要使该查询起作用,您的结构需要是这样的

    Objects
       LCLLists
          node_x: "TestList3"
          node_y: "TestList"
    

    我的猜测是你想坚持你当前的结构,所以假设我们想使用你的结构查询所有“TestList”的名称

    let ref = self.ref.child("LCLLists") //self.ref is a class var that references my Firebase
    let query = ref.queryOrdered(byChild: "name").queryEqual(toValue: "TestList")
    query.observeSingleEvent(of: .value, with: { snapshot in
        print(snapshot)
    })
    

    结果是 node_y 的打印输出

          node_y
             creator: "fgdfgdfg"
             name: "TestList"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-12-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多