Firebase - 如果设置为分页的键已被删除,如何处理分页

长矛撒玛利亚

我使用这个问题底部的分页方法,效果很好。一旦startKey使用keyfrom初始化,db下一个分页将发生,下一组帖子(子级)将附加到数据源。

在此处输入图片说明

我意识到,如果它key被发布它的初始用户删除,那么一旦我尝试从中分页,key因为它不存在,如果它存在就会被附加的孩子不会被附加,因为他们不会可访问(它们可基于该密钥访问)。

在此处输入图片说明

The only thing I could think of was to first check if the key exists() and if it doesn't just start everything over from the beginning:

if !snapshot.exists() {

     self?.startKey = nil
     self?.datasource.removeAll()
     self?.collectionView.reloadData()
     self?.handlePagination()                    
     return
 }

It works fine but it's not the most fluid user experience because I'd rather just pull the posts prior to the deleted key (I have no prior reference to them).

在此处输入图片说明

A possibility is to just keep an array of all the previous keys and just loop through them but there's always a minute chance that those keys can get deleted by the users who posted them also.

Any ideas of how to get around this?

var startKey: String?

func handlePagination() {

    if startKey == nil {

        Database...Ref.child("posts")
          .queryOrderedByKey()
          .queryLimited(toLast: 7)
          .observeSingleEvent(of: .value, with: { [weak self](snapshot) in

            guard let children = snapshot.children.allObjects.first as? DataSnapshot else { return}

            for child in snapshot.children.allObjects as! [DataSnapshot] {
                    // append child to datasource
            }
            self?.startKey = children.key
        })

    } else {

        Database...Ref.child("posts")
          .queryOrderedByKey()
          .queryEnding(atValue: startKey!)
          .queryLimited(toLast: 8)
          .observeSingleEvent(of: .value, with: { [weak self](snapshot) in

            if !snapshot.exists() {

                self?.startKey = nil
                self?.datasource.removeAll()
                self?.collectionView.reloadData()
                self?.handlePagination()                    
                return
            }

            guard let children = snapshot.children.allObjects.first as? DataSnapshot else { return}

            for child in snapshot.children.allObjects as! [DataSnapshot] {
                // insert child in datasource at startIndex
            }
            self?.startKey = children.key
        })
    }
}
Frank van Puffelen

there's always a minute chance that those keys can get deleted by the users who posted them also

你是说你可以保留当前页面的键,然后循环直到找到一个未被删除的项目。在所有都被删除的情况下,您会到达键列表的末尾,并且应该创建一个没有 startAt() 的新查询。这将为您提供第一个 X 项,我认为在这种情况下这是正确的行为。

但总的来说:处理实时和分页真的很难,这是 FirebaseUI 中的分页适配器不进行实时更新的主要原因。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Swift iOS:Firebase分页

来自分类Dev

Firebase分页-Swift 3

来自分类Dev

Firebase orderby键与orderby时间戳,用于分页

来自分类Dev

如何设置Firebase数据库规则?如何防止.write被删除的用户

来自分类Dev

使用firebase过滤分页列表

来自分类Dev

如何处理Firebase身份验证错误?/迅捷/ Firebase

来自分类Dev

如何处理[NSDate]和Firebase

来自分类Dev

如何在Firebase的iOS SDK上执行分页查询?

来自分类Dev

如何使用Firebase按子值按降序分页?

来自分类Dev

如何在Firebase中按升序或降序检索分页的子代?

来自分类Dev

如何在Firebase数组中使用ngTable分页

来自分类Dev

如何使用Firebase按子值按降序分页?

来自分类Dev

使用recyclerview进行firebase android分页

来自分类Dev

在Swift Firebase中滚动时的分页

来自分类Dev

Firebase Firestore分页返回重复结果

来自分类Dev

使用Firebase在Flutter中分页数据

来自分类Dev

Firebase Firestore分页最佳做法/是否优化?

来自分类Dev

打印文本时如何处理分页?

来自分类Dev

你如何处理“硒”中的分页?

来自分类Dev

如何从Firebase删除条目

来自分类Dev

Firebase Auth createUserWithEmailAndPassword返回“没有与此标识符对应的用户记录。该用户可能已被删除。”

来自分类Dev

如何处理Firebase离线模式和数据推送?

来自分类Dev

Firebase如何处理多头和双头?

来自分类Dev

如何处理Android WebView中的Firebase动态链接

来自分类Dev

如何处理重复的Firebase应用初始化

来自分类Dev

如何处理多个身份验证提供程序(firebase)

来自分类Dev

如何处理 Firebase Adapter RecyclerView 空视图?

来自分类Dev

当设备屏幕关闭时,如何处理 firebase 通知?

来自分类Dev

Firebase中如何处理Android的异步运行

Related 相关文章

  1. 1

    Swift iOS:Firebase分页

  2. 2

    Firebase分页-Swift 3

  3. 3

    Firebase orderby键与orderby时间戳,用于分页

  4. 4

    如何设置Firebase数据库规则?如何防止.write被删除的用户

  5. 5

    使用firebase过滤分页列表

  6. 6

    如何处理Firebase身份验证错误?/迅捷/ Firebase

  7. 7

    如何处理[NSDate]和Firebase

  8. 8

    如何在Firebase的iOS SDK上执行分页查询?

  9. 9

    如何使用Firebase按子值按降序分页?

  10. 10

    如何在Firebase中按升序或降序检索分页的子代?

  11. 11

    如何在Firebase数组中使用ngTable分页

  12. 12

    如何使用Firebase按子值按降序分页?

  13. 13

    使用recyclerview进行firebase android分页

  14. 14

    在Swift Firebase中滚动时的分页

  15. 15

    Firebase Firestore分页返回重复结果

  16. 16

    使用Firebase在Flutter中分页数据

  17. 17

    Firebase Firestore分页最佳做法/是否优化?

  18. 18

    打印文本时如何处理分页?

  19. 19

    你如何处理“硒”中的分页?

  20. 20

    如何从Firebase删除条目

  21. 21

    Firebase Auth createUserWithEmailAndPassword返回“没有与此标识符对应的用户记录。该用户可能已被删除。”

  22. 22

    如何处理Firebase离线模式和数据推送?

  23. 23

    Firebase如何处理多头和双头?

  24. 24

    如何处理Android WebView中的Firebase动态链接

  25. 25

    如何处理重复的Firebase应用初始化

  26. 26

    如何处理多个身份验证提供程序(firebase)

  27. 27

    如何处理 Firebase Adapter RecyclerView 空视图?

  28. 28

    当设备屏幕关闭时,如何处理 firebase 通知?

  29. 29

    Firebase中如何处理Android的异步运行

热门标签

归档