解析云代码修改其他类

Parse Cloud Code Modifying Other Classes

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

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()
            }
        })
    }
})

您需要为您查询 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) {
            // ...
        }
    });
});

最好这样写你的代码:

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]