【发布时间】:2015-06-12 11:12:32
【问题描述】:
我是解析 sdk 的新手,但这是我一直在苦苦挣扎的情况。 我正在使用 android 客户端和一些 CloudCode 功能。
我有 2 个类 Joins 和 Groups。
Joins(存储每个加入请求)
userId - 指向 _User 类的指针
人数
groupId - 指向组的指针
Groups(标识一个组)
placeId - 指向 Place 类的指针
访问日期
组由 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 分配给这个加入请求。
我已阅读解析文档,由于缺少事务/系统锁,无法在组中创建唯一行,但是有一些解决方法。
解决方案1:beforeSave + afterSave
将在组上创建一个 beforeSave 和一个 aftersave 挂钩 JS 方法。
BeforeSave 将检查
- 如果已经存在一个组(请求中有 placeId 和 dateOfVisit),则什么也不做
- 否则保存/创建一个新组。
AfterSave 会
在 createdAt 列上按升序执行 query.first equalTo(请求中的 placeId 和 dateOfVisit),并返回此 groupId 并将其保存以用于加入请求。
解决方案2:afterSave + 后台作业
我完全不在乎重复的条目
AfterSave
在 createdAt 列上按升序执行 query.first equalTo(请求中的 placeId 和 dateOfVisit),并返回此 groupId 并将其保存以用于加入请求。
后台作业会定期删除除 min.createdAt 条目之外的所有重复条目。
这些听起来是不是有点矫枉过正? 任何建议表示赞赏!谢谢。
【问题讨论】:
标签: javascript android mongodb parse-platform