【问题标题】:Adding Elements to PFObject Array without Retrieving Object在不检索对象的情况下将元素添加到 PFObject 数组
【发布时间】:2015-12-02 17:48:27
【问题描述】:

我有一个User 表和一个FriendRequest 连接表。

Users 创建带有fromtostatus 列的FriendRequest

当用户接受FriendRequest时,他将状态更改为Accepted,并触发云代码afterSave方法,检查请求的状态。

如果是Accepted,则应将两个用户分别添加到好友数组列中。

看起来像这样(抱歉没有使用 UML):

问题在于接受过程消耗了很多的请求。

1-1x 请求:将状态更改为Accepted

2-2x 请求:获取两个 User 对象以更新好友列

3- 2x 请求:同时保存 User 和更新的朋友列

我想知道是否有一种巧妙的方法可以减少请求的数量,更具体地说,有没有办法在不检索其父对象的情况下将元素添加到数组中?

【问题讨论】:

    标签: javascript arrays parse-platform parse-cloud-code


    【解决方案1】:

    我必须将它从 5 个请求减少到 2 个。

    我没有发出请求来获取两个用户,而是通过在本地使用id 声明我要更新的User 来确定它。

    然后,我用指向他们即将成为朋友的用户的唯一指针更新这 2 个对象的 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");
          }
        });
      }
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-19
      • 2010-12-29
      • 1970-01-01
      • 2023-01-04
      • 2021-12-15
      • 2013-01-11
      • 2020-03-02
      相关资源
      最近更新 更多