繁体   English   中英

为什么我的 dataSnapshot.val() 等于 null?

[英]Why is my dataSnapshot.val() equal to null?

代码:

app.controller('ctrl', function ($scope, $firebaseArray, $timeout) {

    $scope.data = [];
    var _start = 0;
    var _end = 4;
    var _n = 5;

    console.log("1");

    $scope.getDataset = function() {
        console.log("4");
        fb.orderByChild('time').startAt(_start).endAt(_end).limitToLast(_n).on("value", function(dataSnapshot) {
            console.log("5");
            $scope.data.push(dataSnapshot.val());
            console.log("THE VALUE:"+dataSnapshot.val());
            console.log("6");
        });

        console.log("7");


        _start = _start + _n;
        _end = _end + _n;

        console.log("8");
    };

    console.log("2");

    $scope.getDataset()

    console.log("3");

});

数据库:

"posts" {
    "fun" {
         "-Kzugwouzgafsdbkuzbf" {
             "time": 1478443829263
         }
         "-Krugwouzgafawdrawdr" {
             "time": 1478446164691
         }
    }
}

题:

为什么我的dataSnapshot.val()等于null

注意:

我想按时间戳排序帖子并查询最新的 5 个帖子。

您将时间戳存储为字符串,但传入数字。

"time": "1456273845127"
var _start = 0;

将字符串与数字进行比较是行不通的。 如果你传入字符串,它确实有效:

fb.orderByChild('time').startAt("0").endAt("4").limitToLast(5).on("value", function(dataSnapshot) {
    console.log("5");
    console.log("THE VALUE:"+dataSnapshot.numChildren()+', '+dataSnapshot.val());
    console.log("6");
});

印刷:

“5”

“值:2,[对象对象]”

“6”

http://jsbin.com/tucufor/edit?js,console

对于未来的问题:如果您在 jsbin 中重现该问题,就像我在回答中所做的那样,我们都将轻松获得您的问题所需的最少代码 + json。

更新

由于您表示将时间戳存储为数字,因此对行为的解释有所不同。 在对数值进行排序/过滤时,Firebase 会进行数值比较。 并且当前时间戳比您在代码中使用的4大得多。

fb.orderByChild('time').startAt(0).endAt(Date.now()).limitToLast(5).on("value", function(dataSnapshot) {
    console.log("5");
    console.log("THE VALUE:"+dataSnapshot.numChildren()+', '+dataSnapshot.val());
    console.log("6");
});

这再次给了我两个项目的列表:

“5”

“值:2,[对象对象]”

“6”

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM