swift - Firestore 订购查询不像 Firebase 那样工作?
问题描述
我观察帖子的firebase模型是这样的:
let postReference = Database.database().reference().child("posts")
let watchedByQuery = postReference.queryOrdered(byChild: "/watchedBy/" + UID!).queryStarting(atValue: "")
但是,当我尝试将其转换为 Firestore 时,
let postsReference = Firestore.firestore().collection("posts")
let watchingQuery = postsReference.order(by: "/watchedBy/" + UID!).start(at: [""])
watchingQuery.addSnapshotListener { (querySnapshot, error) in
guard let snapshot = querySnapshot else {
print("Error fetching snapshots: \(error!)")
return
}
snapshot.documentChanges.forEach { diff in
我得到错误Invalid field path (/watchedBy/P02bS6QrVE122yjrU7L87X2). Paths must not contain '~', '*', '/', '[', or ']''
似乎是什么问题?本质上,该查询会检查在 watchBy 部分中具有用户 ID 的帖子。但是,FireStore 转换似乎不起作用。
解决方案
本质上,我只是添加了一个 whereField 使得 watchBy/UID 存在。
let postsReference = Firestore.firestore().collection("posts")
let watchingQuery = postsReference.whereField("watchedBy."+(UID!), isGreaterThan:"")
编辑:
注意从
"/watchedBy/" + UID!
到格式正确的 Firestore 子引用
"watchedBy."+(UID!)
推荐阅读
- storage - xz 存档格式的安全性
- c - 为什么这段代码会在 a%b != 0 时给出这个输出 - “HCF is: 1”?
- angularjs - 使用 angularjs 提取 Shopify 数据
- vba - Excel VBA 用户窗体 - 最小化按钮
- vba - Excel VBA 自动工作表创建器
- angularjs - AngularJS / HAML:如果属性为真,则添加 CSS 类
- vue.js - 一页多次使用Vue组件的正确方法
- javascript - 文本超出 div (CSS)
- html - Libgdx ClassReflection.newInstance 不适用于 html 版本
- php - 了解致命错误:无法在写入上下文中使用临时表达式