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

最佳答案

对于任何遇到这种情况的人,我最终做了以下事情:
为了解决问题1),我确定了Node Total是在创建Node的时间点创建的,从而消除了每次更新时查询存在性的必要性。
对于问题2),使用parseObject.Increment函数来确保原子操作

10-07 21:17