首页 > 解决方案 > Firebase Firestore:防止Android-Java日期范围内的双重预订

问题描述

您好,我正在 Cloud Firestore 中保存房间预订数据,主要字段是:

startdate : TimeStamp
enddate : TimeStamp

我试图找到一些逻辑来防止重复预订,即没有两个日期范围相交的预订。任何实现此功能的想法都将受到高度赞赏。谢谢。

标签: javaandroidfirebasegoogle-cloud-firestorelogic

解决方案


由于您无法运行查询,因此仅使用规则是不可能进行这种操作的。相反,这需要从您可以从应用程序中调用的云函数中管理此类过程。

与您的客户端应用程序相比, Cloud Functions被认为是受控和权威的来源,它通常使用绕过安全规则的管理 SDK 运行,允许您执行客户端无法可靠执行的复杂查询。如果客户只能阅读他们各自的预订,并且您想确保客户不会使用黑客工具绕过预订逻辑,这将很有帮助。

使用此敏感操作,您还应该使用事务来完成预订,因为您可能同时有多个预订冲突。有了这个,Firebase Cloud Functions 使用 Node.js 在支持 Javascript 和 Typescript 的情况下运行。

Node 的 Firestore 事务


推荐阅读