swift - Firestore 对 Orderd By 的无效查询?
问题描述
我正在尝试查询一组帖子。每个帖子都有一个被观看的部分,如果被观看的部分包含用户,那么查询应该返回值。但是,当我运行查询时:
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
if (diff.type == .added) {
}
if (diff.type == .modified) {
}
if (diff.type == .removed) {
}
}
我得到错误Invalid field path (watchedBy/BmVoasdfa34fdtiucWSb8XPPM42). Paths must not contain '~', '*', '/', '[', or ']''
。等效的 firebase 查询运行良好:
let watchedByQuery = postReference.queryOrdered(byChild: "/watchedBy/" + UID!).queryStarting(atValue: "")
我尝试将代码更改为let watchingQuery = postsReference.order(by: "watchedBy.\(UID!)").start(at: [""])
. 此查询有效,但 FireStore 没有返回任何内容。
编辑 :
试过 :
let postsReference = Firestore.firestore().collection("posts")
let watchingQuery = postsReference.whereField("watchedBy."+(UID!), isGreaterThan: "")
却依旧空空如也。
解决方案
结果是我的发布方法仍然与进行乘法更新的 firebase 方法相同。因此,发布机制是发布到错误的路径。
推荐阅读
- html - Select2 插件破坏了 Vega 可视化下拉菜单
- java - 如何使用 Axis 库设置超时选项
- node.js - Express+Redis Post 请求未字符串化
- intellij-idea - IntelliJ Show Diff 包括未版本控制的文件
- azure-data-explorer - 如何根据 Kusto 中的条件计算列的累积总和
- java - 在 SharedPreferences 中保存 hashmap
- java - 如果父窗口不在焦点中,Java 11 上的 JComboBox 在第一次鼠标单击时不显示弹出菜单
- python - 将管理员创建的用户连接到 django 项目中的注册用户
- wordpress - 下载 Bitbucket 存储库,但保证文件名为 master.zip
- node.js - 如何在 Mocha 测试之前运行 Koa 服务器?