1

我有一个 Parse.com 类,名为Node,其中包含一个名为 的数字列cost

我的客户端应用程序允许一次创建多个节点,这些节点使用 SaveAll 调用保存到 Parse。

然后我有另一个类NodeTotals,它将包含所有cost根据特定标准分组的总数。

我正在尝试实现一种有效的方法来计算云代码中的总数。我最初的方法是有一个AfterSave函数(on Node):

  • Node查询符合我条件的所有现有行
  • cost对返回的结果求和
  • 查询NodeTotal条目是否存在,如果存在则更新总数,如果不存在则创建新条目

但我担心这种方法并不是最优的——至少有以下两个原因:

  1. 在每次保存时执行所有这些查询都不Node
  2. 如果客户端创建了一堆新Node对象,然后执行 SaveAll,我的 AfterSave 函数的多个实例将被并行调用 - 每个人都认为没有现有NodeTotal条目,因此创建一个新对象(上面的第三点) -导致创建了不止NodeTotal一行,而实际上应该只有一行

我很确定一定有更好的方法来做我想做的事情——只需要一些明亮的火花来指出它!

4

1 回答 1

0

对于遇到此问题的任何人,我最终都做了以下事情:

为了解决问题 1) 我确保在Node Total创建的时间点Node创建了 - 从而无需在每次更新时查询是否存在

对于问题 2) 使用 ParseObject.Increment函数来确保原子操作

于 2014-11-17T13:48:20.433 回答