解析云代码修改其他类

时间:2015-06-29 23:07:39

标签: parse-platform cloud-code

好的,我正在尝试使用afterSave函数更改单独表中的某些值。在我的设置中,第一个表中更改的对象知道第二个表中的唯一字段。我觉得这个过程应该去:afterSave - >调用特定列的get - >用它来查询第二个表 - >设置找到的对象的字段。当我尝试这个时,没有任何改变。我真的很感激任何帮助。谢谢!

Parse.Cloud.afterSave("A", function(request){
    var A_obj = request.object
    if (A_obj.get("TriggerColumn") == "TriggerValue") {
        var B = Parse.Object.extend("B")
        var query = new Parse.Query(B)
        query.equalTo("B_Data", A_obj.get("Known_B_Data"))
        query.find({
            success: function(b_array) {
                var b = b_array[0]
                b.set("B_Other_Data","New Data")
                b.save()
            }
        })
    }
})

2 个答案:

答案 0 :(得分:0)

您需要查询A_obj以获取其值。因此,你的if条件必须总是返回false。

首先查询A_obj

Parse.Cloud.afterSave("A", function(request){
    var A_obj_query = new Parse.Query("A");
    A_obj_query.get(request.object.id, {
        success: function(A_obj) {
            if (A_obj.get("TriggerColumn") == "TriggerValue") {
                // ...
            }
        },
        error: function(error) {
            // ...
        }
    });
});

答案 1 :(得分:0)

更好地编写代码如下:

Parse.Cloud.afterSave("A", function(request){
    if (request.object.get("TriggerColumn") == "TriggerValue") {
        var B = Parse.Object.extend("B");
        var query = new Parse.Query(B);
        query.equalTo("B_Data", request.object.get("Known_B_Data"));
        return query.find().then(function(results_B) {
            Parse.Promise.when(results_B.map(function(b) {
                b.set("B_Other_Data","New Data");
                b.save();
            }));
        });
    }
})

我认为你唯一的错误就是:var b = b_array[0]