2015-02-06 1 views
0

Я пытаюсь запустить save() на восстановленном объекте _User, но он не сохраняет поле, которое я изменил ("ignoredUsers"), который является массивом. Хотя я вижу, что спасение действительно прошло, так как updatedAt изменилось.Parse Cloud Code save(), похоже, не сохраняет поле

Вот код:

var query = new Parse.Query(Parse.User); 
    query.equalTo("objectId", userid1); 
    query.first({ 
     success: function(result){ 
     var ignored = result.get("ignoredUsers"); 
     if (!ignored) { 
      ignored = []; 
     } 
     ignored.push(userid2); 
     result.set("ignoredUsers", ignored); 
     result.save(); 
     } 
    }); 

ответ

0
function appendUser(toUser, userId) { 
    return toUser.fetch({ 
    success: function(user) { 
     var ignored = user.get("ignoredUsers"); 
     if (!ignored) { 
     ignored = []; 
     } 
     ignored.push(userId); 
     user.set("ignoredUsers", ignored); 
     user.save(); 
    } 
    }); 
} 

Parse.Cloud.job("ignoredUsers", function(request, status) { 
    Parse.Cloud.useMasterKey(); 
    var query = new Parse.Query("Conversation"); 
    return query.each(function(conversation) { 
    var participants = conversation.get("participants"); 
    var userid1 = participants[0].id; 
    var userid2 = participants[1].id; 
    var user1 = participants[0]; 
    var user2 = participants[1]; 
    return appendUser(user1, userid2).then(function() { 
     return appendUser(user2, userid1); }); 
    }); 
    status.success(); 
}); 

Проблема заключалась в том, что функция облако возвращается перед ожиданием обратных вызовов, чтобы закончить