我有一个Parse.com类,名为Node
,它包含一个名为cost
的数字列。
我的客户端应用程序允许一次创建多个节点,这些节点通过SaveAll调用保存到解析。
然后我有另一个类NodeTotals
,它将包含根据特定标准分组的所有cost
的总数。
我正在尝试实现一个有效的方法来完成云代码中的总数。我最初的方法是有一个AfterSave
函数(onNode
),它:
查询符合我的标准的所有现有的Node
行
对返回结果的cost
求和
查询是否存在“NodeTotal
”条目,如果是,则更新总数,否则如果不创建新条目
但我担心这种方法不是最佳的——至少有以下两个原因:
对每个Node
save执行所有这些查询是不好的
如果一组新的Node
对象是由客户端创建的,然后执行一个SaveAudio,则并行调用我的后省函数的多个实例——每个实例都认为没有现有的NodeTotal
条目,因此创建一个新的(第三个点)-导致不止一个NodeTotal
行被创建,在那里应该只有一个。
我很确定一定有更好的方法来做我想做的事-只是需要一些明亮的火花来指出它!
最佳答案
对于任何遇到这种情况的人,我最终做了以下事情:
为了解决问题1),我确定了Node Total
是在创建Node
的时间点创建的,从而消除了每次更新时查询存在性的必要性。
对于问题2),使用parseObject.Increment
函数来确保原子操作