如何反转 Firebase 中的项目顺序

2023-12-03

如何在 Firebase 中反转此列表的顺序?我希望最后一项成为第一项。我尝试使用queryOrdered,但这并没有什么区别。我列出了从 Firebase 检索的数据结构的一个示例:

"-KhPRPQEOiVzPW7G2iQI" : {
            "amount" : "20",
            "coordinate" : {
              "lat" : 28.10388759332169,
              "long" : -81.46038228976457
            },
            "creationTime" : "2017-04-11 00:37:29 +0000",
            "creator" : "6MAK7nkzoBT6NzIxj7DW3564cf72",
            "description" : "A ride ",
            "distanceRadius" : 1609.34,
            "expireTime" : "2017-04-11 03:37:00 +0000",
            "paymentNonce" : "51df2b01-9e97-0fce-14d5-fc8fdf98603c",
            "provider" : "PSEFUZdAAxRH14oYnyzE7yMpcil1",
            "status" : "accepted"
          },

Code:

func retrieveRquestFromFir(){
        var searchType:String!
        switch self.messageType {
        case messageTypeEnum.creator:
            searchType = "creator"
            break
        case messageTypeEnum.provider:
            searchType = "provider"
            break
        }
        //TODO: Fix here
        let path = "rquest/frontEnd/posts/userCreatedPost"
        self.childRef(path).queryOrdered(byChild: "creationTime") .observe(.childAdded, with: {snapshot in
            if let snapDict = snapshot.value as? NSDictionary {
                if let postId = snapDict[searchType] as? String {
                    if  postId == self.currentUserId()! {
                        let rquestId = snapshot.key
                        let status = snapDict["status"] as! String
                        //check to see if message is pending or accepted in order to show messages
                        if status == "pending" || status == "accepted" {
                            let description = snapDict["description"] as! String
                            let amount = snapDict["amount"] as! String
                            let creator = snapDict["creator"] as! String
                            var provider:String?
                            // calculate expire time here
                            var expireTime:String!
                            let dateString = snapDict["expireTime"] as! String
                            var date:Date!
                            if status == "pending" {

                                 date = Date(string: dateString, format: "yyyy-MM-dd HH:mm:ss Z")!
                                if date < Date() {
                                    return
                                }
                            }else if status == "accepted" {
                                expireTime = snapDict["expireTime"] as! String
                                date = Date(string: dateString, format: "yyyy-MM-dd HH:mm:ss Z")!
                            }
                            if let providerUser = snapDict["provider"] as? String {
                                provider = providerUser
                            }
                            let array = [
                                "expireTime":dateString,
                                "amount":amount,
                                "description":description,
                                "rquestId":rquestId,
                                "status": status,
                                "provider":provider as Any,
                                "creator": creator
                                ] as NSDictionary
                            //check if date is more than 5 days if it is more than dont Added
                            let dateAmount = Date.daysBetween(start: date, end: Date())
                            // let StringDate = newDate?.string(withFormat: "yyyy-MM-dd HH:mm:ss Z")

                            if dateAmount <= 5 {
                                DispatchQueue.main.async {
                                    self.RquestInfoArray.append(array)

                                    self.tableView.reloadData()
                                }
                            }
                        }
                    }
                }else {
                    DispatchQueue.main.async {
                       self.RquestInfoArray.append(array)
                        self.tableView.reloadData()
                    }
                }
            }
        })
    }

我使用的一个技巧是向我的对象添加一个字段,将时间戳存储为反转值。当我持久化对象时,我计算该字段的值,并且是reversedDateCreated = timeStamp * -1现在您可以使用默认的 FirebaseorderBy方法以便排序和分页reversedDateCreated field

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何反转 Firebase 中的项目顺序 的相关文章

随机推荐

  • iOS 中 ImageView 的阴影效果

    我试图为我的 Imageview 提供阴影效果 就像这张图片中一样 但我面临的问题是阴影实际上从 Imageview 的底部可见 这是我添加阴影的代码 颜色什么的还是和这个不匹配 CAGradientLayer shadow CAGradi
  • PHP:发送WORD文档文件下载

    这个问题很琐碎 有很多答案 全部相同或几乎相同 但对于我的情况 它没有按预期解决 目标 使用 PHP 将 WORD 文件作为附件发送 简单 意思是 这是代码 send the file to the browser header Cache
  • 在 XSLT 导入/包含中使用动态 href?

    The
  • jquery mobile w/ php 登录表单

    我是使用 jquery mobile 和 php 的新手 提交后 我的登录表单上的提交按钮出现了一些问题 它转到 home php 页面 但 url 也没有转到 home php 它仍然是 login php 我怎样才能解决这个问题
  • Android中如何将session_id保存为cookie值并将其发送到服务器?

    我正在开发一个使用网络服务调用的应用程序 我正在调用我的登录网络服务 如下所示 String url http mydomaim com login php UserFunctions userFunction new UserFuncti
  • 如何在php中回显echo?

    我有一些基本的 PHP 代码 raceramps56 short My Test Product leftMenu div class leftMenuProductButton div 不会回显 PHP 代码 仅回显元素 我尝试过类似的事
  • pyspark fillna 不适用于 ArrayType 列

    我有一个 Spark 集群版本 3 1 2 我有以下输入数据 name gender arr James M 60000 Michael M 70000 31 Robert null 44 400000 Maria F 500000 12
  • RStudio 中与 Shiny 相关的问题

    我想在从 RStudio 选择 Shiny 中定义的选项时插入表格和图表 当选择 选择所有属性 选项时 我想在同一页面上显示 Table1 和 Graph1 如果我按选项 排除产生小于 L 且大于 S 的属性 则仅显示 Table2 和 G
  • 根据另一行中的值获取平均值

    我的 Excel 文件中有这样的值 QR QR AVG val1 q1 5 q1 3 q1 4 q2 7 q2 9 q3 10 q3 11 q3 12 q3 11 q4 5 q5 5 q5 7 我希望 QR AVG 字段表示由不同 QR 值
  • Azure Active Directory 与 MVC,客户端和资源标识同一应用程序

    跟进这个问题 如何在 ASP NET MVC 上执行 Azure Active Directory 单点登录和表单身份验证 我尝试在默认 MVC 4 的登录操作上编写简单的代码 该代码同时使用默认的表单身份验证和 Azure Active
  • Firebase / Firestore 将文档添加到子集合版本 9

    出于某种原因 我只是不明白 我想将新文档添加到子集合中 这是我的布局如下 Users Collection UID Document Lists Collection Category Document Category Document
  • 如何更改 ColorDialog 的标题?

    我正在旋转一个ColorDialogWinForms 中的组件让用户选择特定自定义控件的图表的背景色和前景色 两个配置选项都位于配置对话框的同一页面上 因此我想在弹出对话框时将颜色对话框的标题设置为 背景颜色 以更改图表的背景 并将 网格颜
  • Jackson - 循环依赖导致反序列化失败

    好的 所以我正在尝试使用 jackson json 转换器测试一些东西 我正在尝试模拟图形行为 所以这些是我的 POJO 实体 JsonIdentityInfo generator ObjectIdGenerators PropertyGe
  • 使用 Castle Windsor 在 ASP.NET MVC 中实现多租户的最佳实践是什么?

    我有一个具有两种不同实现的服务 我想注入到控制器构造函数中 具体取决于一个标准 目前该标准是存储在会话中的一个简单值 这是我现在得到的 服务接口 public interface IService string GetSampleText
  • 如何向后视觉选择计算?

    我想直观地向后选择计算 p e 200 3 This is my text 300 2 9 3 This is text 0 25 2 000 sqrt 15 1 5 原因是我会在插入模式下使用它 编写计算后 我想选择计算 使用地图 并将计
  • getScript 或 eval 在特定位置?

    我想知道 eval 或 jQuery 的 getScript 的某些变体 是否可以用于将外部 javascript 定位在 DOM 末尾或头部以外的位置 我试过了 var head document getElementById fig 代
  • 如何将 Microsoft 用户从 Azure 同步到 Keycloak

    我们正在尝试找出一种将用户从 Azure 帐户同步到 Keycloak 的方法 不幸的是 我们找不到它的文档 你知道正确的方法吗 我想使用 Azure 作为外部数据库 可用于对用户进行身份验证 谢谢 我想使用 Azure 作为可用于进行身份
  • 使用 gcc、g++ 和 gdb 在 Window 7 上设置 VSCode 进行 C/C++ 调试

    我正在遵循以下指示here 安装了cpptools 已创建tasks json包含以下内容 version 0 1 0 command g isShellCommand true showOutput always args g hello
  • 如何将“setcdr”与缓冲区局部变量一起使用

    我正在使用的行为setcdr这似乎表明它不限于在不同缓冲区中包含相同名称的缓冲区局部变量 我尝试过使用with current buffer 但这并不能解决问题 例如 buffer A and buffer B两者都包含一个名为的局部变量v
  • 如何反转 Firebase 中的项目顺序

    如何在 Firebase 中反转此列表的顺序 我希望最后一项成为第一项 我尝试使用queryOrdered 但这并没有什么区别 我列出了从 Firebase 检索的数据结构的一个示例 KhPRPQEOiVzPW7G2iQI amount 2