• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios - 使用firestore(firebase云数据库)获取重复数据时

[复制链接]
菜鸟教程小白 发表于 2022-12-11 19:13:27 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我正在使用具有设置限制的 firestore 数据在 tableview 中加载更多功能,同时我滚动 tableview 获取 addListener 方法调用,我检查了两次,得到重复记录。

在下面的代码中,我已经打印了我得到的快照。每次滚动时,它都会按快照 ID 及其数据打印。

仍然得到重复的数据。 firebase 控制台是否有任何其他设置?

这是我的代码,但代码中没有任何错误,它来自 firebase。

func getTasks(){

    // self.tableViewData.reloadDataWithLoader(true)
    let userID = HelperFunction.helper.FetchFromUserDefault(name: kUID)
    let taskRef = Firestore.firestore().collection("tasks")
    let query uery

    if (self.snapLastkey == "") {
        self.arrayTask = []
        self.arrayKeys = []
        self.arraySelectedTask = []
        query = taskRef.whereField(kUUID, isEqualTo: userID).whereField(kIsCompleted, isEqualTo: false).limit(to: kLimit)
    }else{
        query = taskRef.whereField(kUUID, isEqualTo: userID).whereField(kIsCompleted, isEqualTo: false).limit(to: kLimit).start(afterDocument: self.snapLastDocument!)
    }

    query.addSnapshotListener { (snapshot, error) in

        if(error == nil){

            guard let snapshot = snapshot else {
                // The query snapshot has error.
                runOnMainThread {
                    // self.tableViewData.reloadData(withPlaceholderString: "No task found.", with: APP_BLACK_COLOR)
                }
                print("Error retrieving products: \(error.debugDescription)")
                return
            }

            guard let lastSnapshot = snapshot.documents.last else {
                // The collection is empty.
                runOnMainThread {
                    self.tableViewData.reloadData(withPlaceholderString: "No task found.", with: APP_BLACK_COLOR)
                    if(self.snapLastkey != "") {
                        self.tableViewData.reloadDataWithLoader(false)
                        self.footerw.endRefreshingWithNoMoreData()

                    }
                }

                return
            }

           // self.snapLastDocument = lastSnapshot

            if (self.arrayTask.count==0) {
                self.arrayTask = []
                self.arrayKeys = []
                self.arraySelectedTask = []
            }




            snapshot.documentChanges.forEach({ (document) in
                print("\(document.document.documentID) => \(document.document.data())")
                let json = JSON(document.document.data())
                self.arrayTask.append(Task.init(json: json))
                self.arraySelectedTask.append(false)
                self.arrayKeys.append(document.document.documentID)
                self.snapLastkey = document.document.documentID as String
                self.snapLastDocument = document.document

            })

            print("\n\n\n\n\n--------arr print---------\n\n")
            for  i in 0..<self.arrayTask.count
            {
                let task = self.arrayTask[i]
                print("arr task Title:",task.title)
            }


            self.tableViewData.reloadData()
            if(self.arrayTask.count==0){
                self.snapLastkey = ""
                self.tableViewData.reloadData(withPlaceholderString: "No task found.", with: APP_BLACK_COLOR)
            }else{
                if Int(snapshot.documents.count) < kLimit{
                    self.snapLastkey = ""
                    self.footerw.endRefreshingWithNoMoreData()
                }
                else{
                    self.footerw.endRefreshing()
                }

            }
            print(self.arrayTask)

        }else{
            print(error?.localizedDescription ?? "")
            self.tableViewData.reloadData(withPlaceholderString: "Try again.", with: APP_BLACK_COLOR)
        }


    }

}



Best Answer-推荐答案


已解决

它只是索引问题。我在日志中找到了它。所以在日志中我得到了在 firebase 索引部分创建索引的链接。我已经创建了需要的新索引,我的数据即将到来正是我想要的。

关于ios - 使用firestore(firebase云数据库)获取重复数据时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47156847/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap