我们的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无法识别查询是一个日期而且是试图按字母顺序排序/过滤?
答案 0 :(得分:1)
事实证明,这只是尝试按字母顺序排序而不是将值识别为日期的问题。解决方案是在创建和查询条目时使用.toISOString()
而不是.toUTCString()
。