当过滤uid时,Swift Firebase查询返回null
问题描述:
我试图通过比较它们的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”
- KgZkrnjFYXG9zKzfgh5
-
用户
- vKSJm500zCQmy2TTFUgv8FepknF2
- 电子邮件: “[email protected]”
- 提供者: “电子邮件”
- 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?
答
问题不在于firebase查询,而是我如何存储UID。 当我通过我的数据库query'd,我用的
Optional(\"vKSJm500zCQmy2TTFUgv8FepknF2\")
代替
vKSJm500zCQmy2TTFUgv8FepknF2
固定它的可选值的快速变化。