2016-12-23 105 views
0

我有一个火力地堡结构,看起来像:火力地堡queryEquals不返回值在斯威夫特

- key1 
    -key2 
    -key3:value 
    -key4:value 
    -key5:value 
    -key6:value 

我期待回到那里key3的值等于一个特定字符串的记录。

let ref = FIRDatabase.database().reference() 
let path = "Object/key1/key2" 

ref.child(path).queryOrdered(byChild: "key3").queryEqual(toValue: "myvalue").observeSingleEvent(of: .value, with: {(snapshot) in 

上述返回NULL。如果我删除queryEqual,则返回所有记录。我已经三重检查了“myvalue”在FB和电话中匹配。

我在一个循环中调用FB为key1key2变化。最后,我只希望这些记录(key2下的所有内容)只有在key3等于我在我的queryEqual声明中发送的值时才会返回。

给予完整的回报见下文。我将我的实际退货流程评论为仅通过简单打印进行检查:

ref.child(path).queryOrdered(byChild: "key3").queryEqual(toValue: "mvValue").observeSingleEvent(of: .value, with: {(snapshot) in 

      for test in snapshot.children 
      { 
       print (test) 
      } 

      /*if let returnDict = snapshot.value as? NSDictionary 
      { 
       helperProtocol.firebaseDidReturn?(returnDict: returnDict, extraDict: extraDict, name:name) 
      } 
      else if let returnArray = snapshot.value as? NSArray 
      { 
       helperProtocol.firebaseDidReturn?(returnDict: ["array":returnArray], extraDict: extraDict, name:name) 
      } 
      else 
      { 
       helperProtocol.firebaseDidReturn?(returnDict: nil, extraDict: extraDict, name:name) 
      }*/ 
     }) 
+0

发布您的代码,试图从FB中获取响应。我想知道你是不是把响应代码放在正确的地方。 –

+0

鉴于当我拿出等价支票时我得到了答复,我不认为这是问题所在。无论平等检查是否存在,回报不应该不同。但是,在更新中发布。 – C6Silver

回答

0

问题在于查询路径的深度。从上面我所用:

let path = "Object/key1/key2" 

到需要的路径:

let path = "Object/key1" 

所以即使搜索键(key3)是key2下,采取的办法是去一个水平如图所示以上。

相关问题