2016-12-29 49 views
11

狀況:如何加載分數高於100的最新帖子?

我目前使用此代碼按時間順序加載最新的帖子:


CODE:

 $scope.data = []; 
     var _n = Math.ceil(($(window).height() - 50)/(350)) + 1; 
     var _start = <%= lastID %>; 
     var firstElementsLoaded = false; 

     $scope.getDataset = function() { 

      fb.orderByChild('id').startAt(_start).limitToFirst(_n).on("child_added", function(dataSnapshot) { 

       _start = dataSnapshot.child("id").val() + 1; 
       console.log("LAST TRUE ID:"+ _start); 

       $scope.data.push(dataSnapshot.val()); 
       $scope.$apply() 
       console.log("THE VALUE:"+$scope.data); 

       firstElementsLoaded = true; 
      }); 
     }; 


     $scope.getDataset(); 

問題:

我應該如何修改它,以便基本上具有完全相同的行爲,但僅根據其時間順序查詢分數高於100的帖子?


UPDATE:

我終於找到了一種方法使用「創建另一個指標」的方法與我的架構。但一個障礙仍然存在:

How to copy a childNode from one node to another?

+0

這將通過兩個屬性,這是不可能的要求排序/過濾。您可以將這兩個值組合成一個屬性,如下所述:http://stackoverflow.com/questions/26700924/query-based-on-multiple-where-clauses-in-firebase –

+0

@FrankvanPuffelen謝謝爲了快速響應時間。我查看了你鏈接的答案,但我仍然對我如何將我的ID和分數合併到一個屬性中感到困惑。在我進一步調查之前,當您在我的問題中查看我的代碼時,對您來說似乎是可行的嗎? – Coder1000

+1

這聽起來很棘手,因爲你基本上需要兩個相對的操作(> 100和orderByKey)。如果你可以將100個以上的物品分成一個獨立的頂層節點,那當然是微不足道的。 –

回答

3

我重新考慮我的架構,並創造了最高職位的特定索引:

if (funPost.score >= global.hotNumber && funPost.hot == false) { 
      var hotPostRef = firebase.database().ref("hot/section/"+key); 
      var hotPost = { 
       title: funPost.title, 
       image: funPost.image, 
       id: funPost.id, 
       key: funPost.key 
      } 
      hotPostRef.set(hotPost); 
      funPostRef.update({"hot": true}); 
     } 
    else if (funPost.score <= (global.hotNumber - 25) && funPost.hot == true) { 
     var hotPostRef = firebase.database().ref("hot/section/"+key); 
     hotPostRef.remove(); 
     funPostRef.update({"hot": false}); 
    } 
相關問題