2016-02-04 43 views
0

請幫助我,我在我的應用程序中開發一個消息系統,以允許信使與客戶交換消息。firebaseArray通過編號限制一個結果

有一個視圖顯示客戶每次差事聯繫的所有信使的信息列表。並使用firebaseArray返回每個快遞的所有消息。這就是我被卡住的原因,因爲我想每個快遞只顯示一條消息(最新)。所以,如果一個客戶的信息交換與Courier1,Courier2,Courier3,而不是顯示在列表中這樣他們所有消息:

courier2 - message 6 
courier3 - message 5 
courier2 - message 4 
courier1 - message 3 
courier1 - message 2 
courier1 - message 1 

我只需要在列表中顯示這樣從各快遞公司的最新消息。

courier2 - message 6 
courier3 - message 5 
courier1 - message 3 

這裏是消息樹的火力樣本:

"messages" : { 
    "-K9cxQITQ0jE6I7aXMm_" : { 
     "date_send" : 1454533620992, 
     "dest" : "Alexandre", 
     "dest_uid" : "c6f1c2ca-gg454-47ca-882c-ffb45c992d86", 
     "picture_runner" : "img/hipster_male.png", 
     "courier" : "Ludovic", 
     "txt" : "Lorem ipsum dolor sit amet, consectetur adipisicing elit" 
    }, 
    "-K9dNYddxIbWXeasvYEK" : { 
     "date_send" : 1454540733073, 
     "dest" : "Alexandre", 
     "dest_uid" : "c6f1c2ca-gg454-47ca-882c-ffb45c992d86", 
     "picture_runner" : "img/hipster_female.png", 
     "courier" : "Ophélia", 
     "txt" : "Hello" 
    }, 
    "-K9dO14ASsfXn4XrTJdX" : { 
     "date_send" : 1454540857713, 
     "dest" : "Alexandre", 
     "dest_uid" : "c6f1c2ca-gg454-47ca-882c-ffb45c992d86", 
     "picture_runner" : "img/hipster_female.png", 
     "courier" : "Ophélia", 
     "txt" : "Hello" 
    } 

這裏是我如何得到消息:

var fbAuth = fbaseUrl.getAuth(); 
     var query = fbaseUrl.child("messages").orderByChild("dest_uid").startAt(fbAuth.uid); 
     $scope.messages = $firebaseArray(query); 

回答

1

你會發現,在NoSQL的你經常必須將一些數據添加到模型中以允許您要實現的用例。

在這種情況下,由於要顯示該客戶的互動與各快遞公司的最新消息,你應該存儲信息:

latest_message_per_courier_per_customer 
    "Alexandre" 
     "Ludovic": "-K9cxQITQ0jE6I7aXMm_" 
     "Ophélia": "-K9dO14ASsfXn4XrTJdX" 
    "Savad" 
     "Ophélia": "other_message_id" 

現在你可以一個$firebaseArray綁定到該消息列表顧客。您可以將實際消息存儲在此結構中。或者您可以存儲每封郵件的ID,然後通過擴展$firebaseArray來「加入」實際內容。參見例如:How to extend returned objects in the list returned by $asArray?