我正在尝试查询一组帖子。每个帖子都有一个观看者部分,如果观看者部分包含用户,则查询应返回该值。但是,当我运行查询时:
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)。路径不得包含“~”、“*”、“/”、“[”或“]”
。等效的 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 方法相同。因此,发布机制发布到错误的路径。
关于swift - Firestore 对 Order By 的查询无效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51218345/