2015-04-25 4 views
1

Как написать в облачном коде (parse.com) короткую программу, которая автоматически копирует значение поля одного PFObject в определенное поле других PFObject (другого класса, чем исходный) при изменении исходного поля? Например, у меня есть имя пользователя, и я хочу, чтобы он автоматически копировался на объекты своих сообщений, когда он менял свое имя. И я бы хотел, чтобы это было сделано на стороне серверов. Таким образом, я нуждаюсь в этом, написанном в облачном коде.Автоматическое копирование некоторого значения, когда оно изменено в облачном коде [parse.com]

+0

Что вы сделали до сих пор? Любой код? – Abhishek

+0

Почему бы просто не обратиться к пользователю и не потянуть его, когда вам это нужно? Обновление всех сообщений пользователей, когда что-то изменится, может сильно повлиять на ваш предел скорости запроса ... – Wain

ответ

0

Для реализации этой функции вы можете использовать процедуру Parse Cloud afterSave. Предположим, у вас есть таблица Profile в Parse, и у вашего пользователя есть опция, где он/она может обновить имя. Таким образом, вы можете написать функцию cloud afterSave, в которой вы просматриваете таблицу Post (на основе вашего userId) и обновляете поля имени (это простой сценарий). Ниже приведен пример кода;

Parse.Cloud.afterSave("Profile", function(request) { 

    var updatedList = []; 
    var query = new Parse.Query("Post"); 
    query.equalTo("userId", request.object.get("userId")); 
    query.find({ 
    success: function(records) 
    { 
     for(var i = 0;i < records.length;i++) 
     { 
      var currentObject = records[i]; 
      currentObject.set("name",request.object.get("name")); 
      updatedList.push(currentObject); 
     } 
     Parse.Object.saveAll(updatedList,{ 
     success: function(list) {}, 
     error: function(error) {}, 
     }); 
    }, 
    error: function(error) 
    { 
    } 
    }); 
}); 

Приведенный выше код запускается после сохранения в таблице профилей. Он ищет класс Post и находит все записи, связанные с вашим текущим пользователем (реквестером). После этого обновляется столбец Post, где он меняет поле имени.

И НЕ ЗАБУДЬТЕ, эта процедура запускается для всех обновлений в таблице профилей. Таким образом, еще один вариант - написать облачную функцию, в которой вы запускаете, когда вы обновляете что-то в профиле (в своем приложении). Надеюсь это поможет.

С уважением.