javascript – orderByChild在Firebase中不起作用

前端之家收集整理的这篇文章主要介绍了javascript – orderByChild在Firebase中不起作用前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图查询我的数据库,以便它基于子键检索有序列表.我做如下(见下文),但没有任何反应,这意味着它返回一个完全按照与存储在Firebase数据库中相同的方式排序的对象.到底是怎么回事?
self.getAllProfiles = function () {
    var qProfile = $q.defer();
    var ref = new Firebase(FBURL);
    ref.child("users").orderByChild('last_update').on("value",function (snapshot) {
        console.log(snapshot.val()) // HERE IS WHERE IT SHOULD BE ORDERED
        qProfile.resolve(snapshot.val());
    },function (errorObject) {
        qProfile.reject(errorObject);
    });
    return qProfile.promise;
};

添加,我的用户节点如下所示:

users
   /$username
       /last_update
       /id
       /data
          /profile_image
          /display_name

这是一个快照:

Tester: Object
   github: Object
   last_update: 1447732462170
   userId: "github:12345"

解决方法

当您调用snapshot.val()时,您将收回一个JSON对象. JSON对象中的键顺序由浏览器决定,而不是由Firebase决定.

为了让孩子顺利进行:

self.getAllProfiles = function () {
    var qProfile = $q.defer();
    var ref = new Firebase(FBURL);
    ref.child("users").orderByChild('last_update').on("value",function (snapshot) {
        snapshot.forEach(function(child) {
            console.log(child.val()) // NOW THE CHILDREN PRINT IN ORDER
        });
        qProfile.resolve(snapshot.val());
    },function (errorObject) {
        qProfile.reject(errorObject);
    });
    return qProfile.promise;
};

您可以将q.resolve()调用到其中:snapshot.forEach()不是异步调用.

原文链接:https://www.f2er.com/js/154618.html

猜你在找的JavaScript相关文章