在保存之后保存重复行保存

时间:2015-06-12 11:12:33

标签: javascript android mongodb parse-platform

我是新手解析sdk,但这是我一直在努力的情况。 我正在使用Android客户端和一些CloudCode功能。

我有两个类加入和组。

加入(存储每个加入请求)

userId - 指向_User类的指针 numberOfPeople
groupId - 指向组的指针

群组(标识群组)

placeId - 指向放置班级的指针 dateOfVisit

该组由 placeId dateOfVisit 标识(这些将构建主键)。

例如:

  

placeId dateOfVisit
  111111111 2015-06-13 16:00
  111111111 2015-06-14 16:00

当用户想要加入 placeId:1111111111 dateOfVisit:2015-06-14 16:00 时,我想检查是否有现有群组或我需要创建一个新组并将此groupId分配给此加入请求。

我已经阅读了解析文档,因为缺少事务/系统锁定而无法在Group中创建唯一的行,但是有一些解决方法。

Solution1:beforeSave + afterSave

将在Groups上创建一个beforeSave和一个aftersave hook JS方法 BeforeSave 会检查
  - 如果已经存在一个组(请求中包含placeId和dateOfVisit),则不执行任何操作   - 否则保存/创建一个新组 AfterSave 会  在 createdAt 列上按升序执行query.first equalTo(placeId和dateOfVisit)并返回此groupId并将其保存为加入请求。

解决方案2:afterSave +后台作业

我根本不关心重复的条目
AfterSave 会  在 createdAt 列上按升序执行query.first equalTo(placeId和dateOfVisit)并返回此groupId并将其保存为加入请求。 后台作业 会定期删除除min。 createdAt 条目以外的所有重复条目。

这听起来有点矫枉过正吗? 任何建议赞赏!谢谢。

1 个答案:

答案 0 :(得分:0)

您不需要同时制作beforeSaveafterSave,只需beforeSave即可。

在您的Cloud Code中,定义一个beforeSave函数:

  • 使用equalTo("placeId", placeId)Groups类来检查是否存在现有组。
  • 如果结果返回null,您可以创建新的Group并分配与原始请求一起发送的userId。否则,将userId与返回的对象关联。

查看有关Cloud Code here的更多信息,您可能还需要了解Promises