我试图查询我的数据库,以便它基于子键检索有序列表.我做如下(见下文),但没有任何反应,这意味着它返回一个完全按照与存储在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; };