2015-12-02 155 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"); 
     } 
    }); 
    } 
}); 
相关问题