好的,我正在尝试使用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()
}
})
}
})
答案 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]