Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/215.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在向ParseObject添加关系时使用Parse.can.AfterSave_Android_Parse Platform_Parse Cloud Code_Parse Android Sdk_After Save - Fatal编程技术网

Android 在向ParseObject添加关系时使用Parse.can.AfterSave

Android 在向ParseObject添加关系时使用Parse.can.AfterSave,android,parse-platform,parse-cloud-code,parse-android-sdk,after-save,Android,Parse Platform,Parse Cloud Code,Parse Android Sdk,After Save,我刚刚体验了parse sdk,我想使用云代码在客户端添加的两个表之间的关系(例如用户喜欢帖子)时增加一个数字列,在解析文档中,只有基于保存对象而不是使用afterSave的表之间的关系来增加列的代码: Parse.Cloud.afterSave("Comment", function(request) { query = new Parse.Query("Post"); query.get(request.object.get("post").id, { success: function(p

我刚刚体验了parse sdk,我想使用云代码在客户端添加的两个表之间的关系(例如用户喜欢帖子)时增加一个数字列,在解析文档中,只有基于保存对象而不是使用afterSave的表之间的关系来增加列的代码:

Parse.Cloud.afterSave("Comment", function(request) {
query = new Parse.Query("Post");
query.get(request.object.get("post").id, {
success: function(post) {
  post.increment("comments");
  post.save();
},
error: function(error) {
  console.error("Got an error " + error.code + " : " + error.message);
}
});
});

如何使用afterSave更改两个表之间的关系?任何帮助都将不胜感激。

我建议改用beforeSave。下面是我从一个项目中提取的示例代码

Parse.Cloud.beforeSave(ClassConstants.Item.TYPE, function(request, response) {

    if(!request.object.isNew()) {
        // Retrieve the relationship information in json string format. 
        // RELATION_QUEUE here is simply a string "queue"
        var relQueueJsonStr = JSON.stringify(request.object.op(ClassConstants.Item.RELATION_QUEUE));

        if( relQueue !== undefined ) {
            var relQueue = JSON.parse(relQueueJsonStr);
            // Retrieve the operation being performed to this existing object.
            // The value will be "AddRelation" if a the relation "queue" is  
            // being added to this object
            var operation = relQueue.__op;
            if (operation == "AddRelation"){
                console.log("Relation queue is being added");
               // Do what you like here. In your case increment something

                response.success();
            } else {
            // Relation is being removed
                console.log("Relation queue is being removed");
                response.success();
            }
        } else {
            console.log("No queue relation.");
            response.success();
        }
    } else {
        response.success();
    }
});

经过一些与解析文档的斗争!最后,我用这种方法解决了我的问题,它可以很好地计算特定对象的两个表之间的关系,希望这可以节省其他人一些时间:

Parse.Cloud.afterSave("SavedObject", function(request) {
  var likeQuery = request.object.relation("likers").query();
  likeQuery.count()(function(likersCount){

      request.object.set("likersCountColumn",likersCount);
      console.log("Likers Count Is : "+ likersCount);
      request.object.save();
  }); 
});

谢谢你的回答,我很快会更深入地看你的答案,但是你能告诉我为什么在保存之前?老实说,我记不清了。我认为这是因为在afterSave()中,它只是告诉您结果对象。在beforeSave()中,它告诉您要进行哪些更改。例如,我刚才给出的代码带有一个“AddRelation”的检查,它明确表示一个关系正在被添加到对象中。我认为我表达的问题不够好,我认为(如果我理解您的代码)在代码中创建关系时,您的解决方案是有效的,但我的表中已经有了这种关系,所以我尝试了另一种解决方案,在我的情况下,只需在添加一个关系时计算关系,我认为这更简单、更清晰。非常感谢你的帮助。