Firebase简单查询日期范围......不起作用

时间:2016-09-22 14:05:16

标签: angularjs firebase

我有一个带有一些键的数组:

['-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"

1 个答案:

答案 0 :(得分:1)

您的ts_exp值看起来像是数字(14123123123),但您的startAt / endAt是字符串,Firebase数据库会在所有字符串之前排序所有数字,因此您的查询正在搜索没有数据的范围。

未经测试,但请尝试:

var yesterday = moment().subtract(1, 'day').valueOf();
var tomorrow = moment().add(1, 'day').valueOf();