2015-08-30 1 views
1

Я просто испытываю синтаксический анализ sdk, и я хотел использовать код облака для увеличения столбца Число всякий раз, когда связь между двумя таблицами, добавленными клиентом (например, пользователю нравится должность), в синтаксической документации есть только коды приращения столбца, основанный на сохранение объекта, а не отношение между таблицами, используя afterSave:с использованием Parse.Could.AfterSave при добавлении отношения к ParseObject

Parse.Cloud.afterSave("Comment", function(request) { 
query = new Parse.Query("Post"); 
query.get(request.object.get("post").id, { 
success: function(post) { 
    post.increment("comments"); 
    post.save(); 
}, 
error: function(error) { 
    console.error("Got an error " + error.code + " : " + error.message); 
} 
}); 
}); 

, как я могу использовать afterSave об изменении отношения между двумя таблицами? любая помощь будет оценена по достоинству.

ответ

0

После некоторой борьбы с парсией Документация! наконец, я уже решил мою проблему таким образом, и он прекрасно работает для подсчета отношения между двумя таблицами для конкретного объекта, надеюсь, что это экономит время другим:

Parse.Cloud.afterSave("SavedObject", function(request) { 
    var likeQuery = request.object.relation("likers").query(); 
    likeQuery.count()(function(likersCount){ 

     request.object.set("likersCountColumn",likersCount); 
     console.log("Likers Count Is : "+ likersCount); 
     request.object.save(); 
    }); 
}); 
1

Я предлагаю вместо этого использовать beforeSave. Вот пример кода, который я извлек из одного из моих проектов.

Parse.Cloud.beforeSave(ClassConstants.Item.TYPE, function(request, response) { 

    if(!request.object.isNew()) { 
     // Retrieve the relationship information in json string format. 
     // RELATION_QUEUE here is simply a string "queue" 
     var relQueueJsonStr = JSON.stringify(request.object.op(ClassConstants.Item.RELATION_QUEUE)); 

     if(relQueue !== undefined) { 
      var relQueue = JSON.parse(relQueueJsonStr); 
      // Retrieve the operation being performed to this existing object. 
      // The value will be "AddRelation" if a the relation "queue" is 
      // being added to this object 
      var operation = relQueue.__op; 
      if (operation == "AddRelation"){ 
       console.log("Relation queue is being added"); 
       // Do what you like here. In your case increment something 

       response.success(); 
      } else { 
      // Relation is being removed 
       console.log("Relation queue is being removed"); 
       response.success(); 
      } 
     } else { 
      console.log("No queue relation."); 
      response.success(); 
     } 
    } else { 
     response.success(); 
    } 
}); 
+0

спасибо за ваш ответ, я буду смотреть на ваш ответьте более глубоко, но можете ли вы сказать мне, почему на beforeSave? –

+0

Если честно, я точно не помню. Я думаю, это потому, что в afterSave() он просто сообщает вам результирующий объект. В beforeSave() он сообщает вам, какие изменения должны быть сделаны. Например, код, который я только что дал, содержит проверку на «AddRelation», в которой явно указано, что отношение добавляется к объекту. –

+0

Я думаю, что я выразил свою проблему не достаточно хорошо, и я думаю (если я получу код хорошо), ваше решение работает, когда отношение создается в коде, но у меня уже были эти отношения на моих таблицах, поэтому я пробовал другое решение, которое работает в моем случае, просто подсчитывая отношения при добавлении одного, и я думаю, что это проще и чище. очень ценю вашу помощь. –

Смежные вопросы