1

我试图通过比较它们的uid和条目的uid属性来检索属于某个用户的所有条目。当过滤uid时,Swift Firebase查询返回null

ref = FIRDatabase.database().reference() 
self.ref?.child("Entry").queryOrdered(byChild: "uid").queryEqual(toValue: uid).observeSingleEvent(of: .value, with: { [weak self] (snapshot) -> Void in 
     guard let strongSelf = self else { return } 
     print(snapshot) 

它返回

Snap (Entry) <null> 

目前我有这个数据结构:

  • 进入

    • KgZkrnjFYXG9zKzfgh5
      • 日期: “2017年3月31日”
      • 文字: “测试123”
      • UID: “vKSJm500zCQmy2TTFUgv8FepknF2”
      • 单词计数: “6”
  • 用户

    • vKSJm500zCQmy2TTFUgv8FepknF2

遵循以下规则:

"Users": { 
    "$uid": { 
    ".write": "!data.exists() || auth.uid === $uid", 
    ".read": "auth !== null" 
    } 
}, 

"Entry":{ 
    ".read" : "auth != null", 
    ".write" : "auth != null", 
    ".indexOn" : "uid" 
} 

林有点困惑,因为当我尝试打印出自己的查询,我得到

let query = self.ref?.child("Entry").queryOrdered(byChild: "uid").queryEqual(toValue: uid) 
    print("/n") 
    print(query) 

Optional((/Entry { 
ep = "Optional(\"vKSJm500zCQmy2TTFUgv8FepknF2\")"; 
i = uid; 
sp = "Optional(\"vKSJm500zCQmy2TTFUgv8FepknF2\")"; 
})) 

我不确定这是什么意思。在我通过uid命令之前,是否应该更改查询以通过autoID?

回答

0

问题不在于firebase查询,而是我如何存储UID。 当我通过我的数据库query'd,我用的

Optional(\"vKSJm500zCQmy2TTFUgv8FepknF2\") 

代替

vKSJm500zCQmy2TTFUgv8FepknF2 

固定它的可选值的快速变化。