Javascript 如何使用startAt和endAt根据时间戳过滤firebase数据
我正在尝试使用startAt和/或endAt筛选firebase数据。 我的数据结构如下Javascript 如何使用startAt和endAt根据时间戳过滤firebase数据,javascript,firebase-realtime-database,Javascript,Firebase Realtime Database,我正在尝试使用startAt和/或endAt筛选firebase数据。 我的数据结构如下 { "notes" : { "-LOs0Ikx4ydM5RatREM1" : { "data" : { "dueDate" : 1561629600000, "description" : "Korewa nan desuka?!", "createdAt" : 1539611900000, "title" : "Fir
{
"notes" : {
"-LOs0Ikx4ydM5RatREM1" : {
"data" : {
"dueDate" : 1561629600000,
"description" : "Korewa nan desuka?!",
"createdAt" : 1539611900000,
"title" : "First "
},
"members" : {
"author" : "1212121212121212121212121212"
}
},
"-LOs0Ikx4ydM5RatREM2" : {
"data" : {
"dueDate" : 4004870448000,
"description": "Test"
"createdAt" : 1539611900000,
"title" : "Second"
},
"members" : {
"author" : "1212121212121212121212121212"
}
},
"-LhBt9msLFKqUQ-koI9W" : {
"data" : {
"dueDate" : 1564653600000,
"description" : "abc",
"createdAt" : 1560363158279,
"title" : "August 1"
},
"members" : {
"author" : "3434343434343434343434343434"
}
},
"-LhBtKdDrQv9eKuYdfCi" : {
"data" : {
"dueDate" : 1564653600000,
"description" : "abcdef",
"createdAt" : 1560363158279,
"title" : "August 2"
},
"members" : {
"author" : "3434343434343434343434343434"
}
}
}
}
我想要的是拿到所有到期日已经过去的票据
const now = moment().valueOf() //Eg. 1561629500000
database.ref('notes/')
.orderByChild("dueDate")
.endAt(now)
.once("value", (snapshot) => {
console.log('Process expired notes')
snapshot.forEach( (data) => {
const obj = data.val()
console.log('Date comparison:', (now >= obj.data.alertDate))
...
上面的代码不起作用,它返回示例JSON中的所有对象。对于四个返回的对象中的三个,console.log记录为False
我可以做一个比较,只处理符合我标准的对象,但这会破坏目的
我已在[notes\data\alertDate]为数据库编制了索引
我错过了什么?我一定是不知怎么曲解了文件 您的dueDate属性嵌套在data下,因此您需要将地址设置为data/dueDate:
您可能希望同时包含startAt和endAt子句,其中只有startAt的合理值和endAt的特定值。是否可以用数据库中的实际JSON片段替换数据库结构?您可以通过单击overflow菜单中的Export JSON链接来实现这一点⠇ 谢谢你的回复,弗兰克我已经更新了JSON代码片段。代码段中的所有对象都将返回。当然!非常感谢D Thanbks作为提示-我还将包括startAt。
database.ref('notes')
.orderByChild("data/dueDate")