首页 > 解决方案 > 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: "")

却依旧空空如也。

标签: swiftfirebasegoogle-cloud-firestore

解决方案


结果是我的发布方法仍然与进行乘法更新的 firebase 方法相同。因此,发布机制是发布到错误的路径。


推荐阅读