当前位置: 首页 > 知识库问答 >
问题:

Firestore Query-Orderby使用时间戳返回null queryDocumentSnapshots

丰辰沛
2023-03-14
  firebaseFirestore.collection("posts")
                    .whereIn("universityId",universityIDs)
                    .orderBy("createdAt", Query.Direction.DESCENDING)
                    .addSnapshotListener( new EventListener<QuerySnapshot>() {
                        @Override
                        public void onEvent(@Nullable QuerySnapshot queryDocumentSnapshots, @Nullable FirebaseFirestoreException e) {
                            Log.d("Check","Snapshot listener");

                            if(queryDocumentSnapshots == null){
                                Log.d("ISNULL","NULL");
                            }
                            else{
                                //
                            }
                    });

共有1个答案

钱宇
2023-03-14

QueryDocumentSnapshots为null时,这意味着E肯定不是null,它将包含一条指示问题所在的消息。您应该经常检查这种情况,并至少记录异常对象,这样您就可以看到哪里出了问题。在这种特定情况下,错误消息将告诉您,您不能按您有“In”查询的不同字段对结果进行排序。这是Firestore的一个限制,在单个查询中无法解决这个问题。从链接的文档中:

不能按子句中的相等(=)或中的任何字段对查询进行排序。

您的where筛选器被视为子句中的

 类似资料:
  • 问题内容: 民间, 我试图了解MomentJS API。在机器上获取当前时间的合适方法是什么? 与 试图解析他们的文档,并且不清楚使用什么。 http://momentjs.com/docs/#/query/is-a- moment/ 问题答案: 在这里,您要为CurrentDate分配一个momentjs实例: 这里只是一个字符串,是momentjs实例的默认格式的结果: 这里是自一月…以来的秒

  • 问题内容: 为什么在能够过滤查询时无法看到_timestamp字段? 以下查询返回正确的文档,但不会返回时间戳本身。如何返回时间戳? 映射为: 样本输出: 问题答案: 启用时间戳字段后,默认情况下会对其进行索引但不存储。因此,尽管您可以通过时间戳字段进行搜索和过滤,但是您无法轻松地通过记录来检索它。为了能够检索时间戳字段,您需要使用以下映射重新创建索引: 这样,您将能够检索到时间戳记以来的毫秒数。

  • 问题内容: 我只想检查是否返回UTC / GMT时间戳,还是需要使用? 问题答案: 返回UNIX时间戳,该时间戳与时区无关。由于UNIX时间戳表示自1970年 UTC 以来的秒数,您可以说它是UTC,但实际上没有时区。 实际上,UNIX时间戳在任何给定时间在全世界范围内都是相同的值。在撰写本文时,它在东京,伦敦和纽约。要将其转换为“人类可读”的时间,您需要指定要显示的时区。在东京是,在伦敦是在纽约

  • 问题内容: 我已将以下代码编写为连接到远程FTP服务器(在CentOS 6中为vsftp)。(为简便起见,此处未显示异常处理) 如果该FTP服务器中有100个文件,则将按字母顺序列出文件名。 有什么办法可以根据修改后的时间获取文件吗? (即最早的文件优先)。这使用命令。 是否有其他命令可用于根据修改时间列出文件? 由于这是一台Linux服务器,我们可以发送一些Linux命令来实现这一点吗? 我已经

  • 我有两个相隔65秒的unix时间戳,我试图以这种方式查询mysql 在FROM_UNIXTIME(1504684252)和FROM_UNIXTIME(1504684317)之间选择ask FROM live_rates WHERE 在我的表中,有一个事件从时间戳开始,65秒后结束。为什么这两个查询都没有返回数据?。

  • 我需要在UTC时间生成一个UNIX时间戳,所以我使用来生成它。 我是否需要执行其他操作,或者时间戳是否自动采用 UTC?