我有一个带有一些键的数组:
['-KSH1rJ8BgbOWKdwdn0J', '-KSH0B8MfPCB2_zI8H3Q', ...];
对于每个键,我想知道是否" ts_exp"到期时间戳是在昨天和明天之间,这两个时间戳都是时间戳。
var yesterday = moment().subtract(1, 'day').format("x");
var tomorrow = moment().add(1, 'day').format("x");
foreach(... as key){
var rootRef = firebase.database().ref('demandes').child(key)
.orderByChild('ts_exp')
.startAt(yesterday)
.endAt(tomorrow);
rootRef.once("value", function(messageSnapshot) {
console.log(messageSnapshot.val()); // always return null
});
}
此查询有什么问题?这总是为空(但我有一个" demande"它在这两个值之间有一个" ts_exp")。我做了.indexOn" ts_exp"在我的火力基地规则中也是。
谢谢
这是数据结构:
-demandes
----- -KSH1rJ8BgbOWKdwdn0J
---------- ts_exp : 14123123123,
---------- title : "pipo1",
---------- desc : "desc"
----- -KSH0B8MfPCB2_zI8H3Q
---------- ts_exp : 14123176576,
---------- title : "pipo2",
---------- desc : "desc2"
答案 0 :(得分:1)
您的ts_exp值看起来像是数字(14123123123),但您的startAt / endAt是字符串,Firebase数据库会在所有字符串之前排序所有数字,因此您的查询正在搜索没有数据的范围。
未经测试,但请尝试:
var yesterday = moment().subtract(1, 'day').valueOf();
var tomorrow = moment().add(1, 'day').valueOf();