2014-10-27 1 views
1

У меня есть класс Parse.com, который называется Node, который содержит номер столбца с именем cost.Parse.com облачный код к итогу после сохранения

Мое клиентское приложение позволяет создавать сразу несколько узлов, которые сохраняются в Parse с помощью вызова SaveAll.

У меня тогда есть еще один класс NodeTotals, который будет содержать общее количество всех cost, сгруппированных по определенным критериям.

Я пытаюсь реализовать эффективный метод для выполнения итогов в облачном коде. Мой первоначальный подход должен был иметь AfterSave функцию (на Node), что:

  • запрашивает все существующие Node строки, которые соответствуют моим критериям
  • суммирует cost на возвращаемые результаты
  • запросы увидеть, если NodeTotal запись существует, обновляет общее количество, если да, или создает новую запись, если нет

Но этот подход не является оптимальным. Я боюсь - по крайней мере, по следующим двум причинам:

  1. выполнение всех этих запросов на каждом Node сохранить косяк быть хорошим
  2. если куча новых Node объектов создаются клиентом, который затем делает SaveAll несколько экземпляров моей функции AfterSave дозвонились параллельно - каждый из них думает, что нет существующих NodeTotal записей, поэтому создает новый (третий пункт выше) - в результате более одного NodeTotal строки создаваемого там, где на самом деле должен быть только один

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

ответ

0

для тех, кто приходит через это, я в конечном итоге делает следующее:

в целях решения вопроса 1) я убедился, что Node Total был создан в момент времени, что Node была создана - тем самым устраняя необходимость запрос на существование во время обновления каждый раз, когда

для выпуска 2) используется функцией Анализировать Object.Increment для обеспечения атомной работы