为什么此实时数据库查询上的排序/过滤不起作用?

时间:2019-06-28 00:16:29

标签: javascript firebase firebase-realtime-database

我们的Firebase实时数据库中的数据格式如下:

{
    events: {
        hourly: {
            abc123: {
                startDate: "Wed, 26 Jun 2019 18:32:27 GMT",
                endDate: "Wed, 26 Jun 2019 23:59:59 GMT",
                someValue: 5
            },
            def456: {
                startDate: "Thu, 27 Jun 2019 12:45:08 GMT",
                endDate: "Thu, 27 Jun 2019 23:59:59 GMT",
                someValue: 10
            },
        }
    }
}

在我们的Firebase Cloud Functions代码中,我这样查询数据:

const now = new Date().toUTCString();
const ref = admin.database().ref('events/hourly');
const hourly = await ref.orderByChild("endDate").startAt(now).once('value');

但是,数据库从events/hourly返回所有条目-它们没有排序或过滤。

我已经将我的代码与官方文档和其他SE问题(例如Firebase Filter by Date)进行了比较,并且看不出我的代码有什么问题-除非Firebase无法识别查询是一个日期而且是试图按字母顺序排序/过滤?

1 个答案:

答案 0 :(得分:1)

事实证明,这只是尝试按字母顺序排序而不是将值识别为日期的问题。解决方案是在创建和查询条目时使用.toISOString()而不是.toUTCString()