Javascript 在保存前保存后分析重复行

Javascript 在保存前保存后分析重复行,javascript,android,mongodb,parse-platform,Javascript,Android,Mongodb,Parse Platform,我对解析sdk还不熟悉,但我一直在努力解决这个问题。 我正在使用android客户端和一些CloudCode函数 我有两个班和两个小组 加入(存储每个加入请求) userId-指向用户类的指针 人数 groupId-指向组的指针 组(标识组) placeId-指向Place类的指针 访问日期 组由placeId和DateOfVisite标识(这些将构成主键) 例如: placeId就诊日期 1111111112015-06-13 16:00 1111111112015-06-14 16:00 当

我对解析sdk还不熟悉,但我一直在努力解决这个问题。 我正在使用android客户端和一些CloudCode函数

我有两个班和两个小组

加入(存储每个加入请求) userId-指向用户类的指针
人数
groupId-指向组的指针

组(标识组) placeId-指向Place类的指针
访问日期

组由placeIdDateOfVisite标识(这些将构成主键)

例如: placeId就诊日期
1111111112015-06-13 16:00
1111111112015-06-14 16:00

当用户想要加入placeId:1111111访问日期:2015-06-14 16:00时,我想检查是否存在现有组,或者我需要创建一个新组,并将此组ID分配给此加入请求

我已经阅读了解析文档,由于缺少事务/系统锁,所以无法在组中创建唯一的行,但是有一些解决方法

解决方案1:保存前+保存后 将在组上创建beforeSave和aftersave钩子JS方法。
保存前将检查
-如果已经存在一个组(请求中包含placeId和DateOfVisite),则不执行任何操作
-否则保存/创建新组。
AfterSave
createdAt列上按升序执行query.first equalTo(请求中的placeId和dateOfVisit),然后返回此groupId并将其保存到加入请求中

解决方案2:afterSave+后台作业 我一点也不在乎重复的条目
AfterSave会 在createdAt列上按升序执行query.first equalTo(请求中的placeId和dateOfVisit),然后返回此groupId并将其保存到加入请求中。 后台作业将定期删除除min.createdAt条目之外的所有重复条目

这些听起来有点过分吗?
任何建议,谢谢!谢谢。

您不需要在保存之前和保存之后同时进行
操作,只需在保存之前进行
操作就足够了

在您的云代码中,定义一个beforeSave函数,该函数:

  • 使用
    equalTo(“placeId”,placeId)
    to
    Groups
    class检查是否存在组
  • 如果结果返回null,您可以创建一个新的
    ,并分配与原始请求一起发送的
    用户ID
    。否则,将
    userId
    与返回的对象相关联

查看有关云代码的更多信息,您可能也需要了解

谢谢您的回答。组由placeId和DateOfVisite标识。根据这一点,您基本上建议使用带有查询equalTo(placeId)和equalTo(dateOfVisit)的beforeSave就足以检查现有组了?是的,如果
dateOfVisit
是您的组标识否,我希望组标识是解析生成的objectId。所以我不想创建重复的条目。或者我误解了你的评论……那么你可以使用
equalTo(“objectId”,你所在组的ID)