2015-06-29 4 views
2

Хорошо, поэтому я пытаюсь использовать функцию afterSave для изменения некоторых значений в отдельной таблице. В моей настройке объект, который изменяется в первой таблице, обладает знанием уникального поля во втором. Я чувствую, что процесс должен идти: afterSave -> вызов get конкретного столбца -> использовать для запроса второй таблицы -> установить поле найденного объекта. Когда я пытаюсь это сделать, ничего не меняется. Я бы очень признателен за любую помощь. Спасибо!Parse Cloud Code Modifying Other Classes

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

лучше написать свой код так:

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]

+1

Спасибо! это полностью работает. –

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) { 
      // ... 
     } 
    }); 
}); 
+0

нет необходимости запрашивать объект из afterSave объекта A. Просто верните информацию с помощью 'request.object.get (FIELD_Requested)' – Toucouleur