2015-12-02 22 views
0

我有一個User表和一個FriendRequest連接表。在沒有檢索對象的情況下向PFObject數組添加元素

User S創建FriendRequest行與fromtostatus

當用戶接受FriendRequest,他將狀態更改爲Accepted,和雲代碼afterSave方法被觸發時,檢查請求的狀態。

如果是Accepted,則應將兩個用戶分別添加到他們的好友數組列中。

看起來這(道歉不使用UML):

enter image description here

的問題是,因爲它是接受過程消耗請求的LOT

1 1X請求:狀態更改爲Accepted

2- 2X請求:取兩個User對象以更新好友欄裏

3- 2X請求:既節省User與更新的朋友列

我想知道是否有減少請求數量的巧妙方法,更具體地說,是否有一種方法可以將元素添加到數組而不檢索其父對象?

回答

0

我得把它從5個減少到2個請求。

我只是通過在本地聲明來更新我要更新的User,而不是發出請求來提取兩個用戶。

然後,我使用指向他們即將成爲好友的用戶的唯一指針更新這兩個對象的'friends列。

最後,我將這兩個對象都保存在一個數組中,並在該數組上調用saveAll

Parse.Cloud.afterSave('FriendRequest', function(request) { 

    var status = request.object.get("status"); 

    var sendingUser = request.object.get("from").id; 
    var receivingUser = request.object.get("to").id; 

    if (status == "Accepted") { 
    var ReceivingUser = Parse.Object.extend("User"); 
    receivingUserObject = new ReceivingUser(); 
    receivingUserObject.id = receivingUser; 

    var SendingUser = Parse.Object.extend("User"); 
    sendingUserObject = new SendingUser(); 
    sendingUserObject.id = sendingUser; 

    receivingUserObject.addUnique("friends", sendingUserObject); 
    sendingUserObject.addUnique("friends", receivingUserObject); 

    var arrayToSave = [receivingUserObject, sendingUserObject]; 

    Parse.Object.saveAll(arrayToSave, { 
     success: function(savedArray) { 
     console.log("successfully saved friends"); 
     }, 
     error: function(error) { 
     console.log("failure saving friends"); 
     } 
    }); 
    } 
}); 
相關問題