Firebase Cloud Firestore:查询项目';s给定时间戳的可用性

Firebase Cloud Firestore:查询项目';s给定时间戳的可用性,firebase,google-cloud-firestore,data-modeling,Firebase,Google Cloud Firestore,Data Modeling,想象一个类似Airbnb的应用程序。rentals集合包含带有时间戳类型的start和end字段的文档,这些字段记录租金的开始日期和结束日期(仅限年、月和日)。在我的Flatter应用程序中,当用户想要提出新的租赁请求时,我需要检查该请求是否干扰任何现有的租赁。存储一个包含天数的Timestamp对象数组,然后使用arrayContains查询/检查会不会太多 例如: rental #1 start: Jan 1 end: Jan 2 days: [Jan 1, Jan

想象一个类似Airbnb的应用程序。
rentals
集合包含带有时间戳类型的
start
end
字段的文档,这些字段记录租金的开始日期和结束日期(仅限年、月和日)。在我的Flatter应用程序中,当用户想要提出新的租赁请求时,我需要检查该请求是否干扰任何现有的租赁。存储一个包含天数的
Timestamp
对象数组,然后使用
arrayContains
查询/检查会不会太多

例如:

rental #1
    start: Jan 1
    end: Jan 2
    days: [Jan 1, Jan 2]
rental #2
    start: Jan 6
    end: Jan 10
    days: [Jan 6, Jan 7, Jan 8, Jan 9, Jan 10]
假设用户希望在1月3日至4日预订租金。我会运行一个循环并查询带有
arrayContains:Jan 3
arrayContains:Jan 4
的文档,如果它返回任何文档,那么我知道租赁请求日期无效。用户可以租用的最大天数为27天,尽管我预计平均租用时间不超过7天。我的方法可行吗?我可能会把最长租期从27天改为14天


我想出的另一种方法是在期望的取货时间前后查询租金。因此,使用上面的例子,如果我想要的租金日期是1月3-4日,我会查询1月3日之前结束的最近租金和1月4日之后开始的最近租金。然而,我遇到的问题是,如果rental#1中的用户决定将其租金从1月1日2日延长到1月1日3日(在我们的用户能够刷新其应用程序之前),该怎么办?或者,如果某个特定列表没有相关的租赁历史记录。

听起来您只需要查看租赁开始日期是否在开始和结束之间,如果不是,请检查租赁结束日期是否在开始和结束之间,对吗?两个查询,你就会知道是否有冲突。你没有指明你的代码库,但这是Swift文档。听起来你只需要看看租赁开始日期是否在开始和结束之间,如果不是,检查租赁结束日期是否在开始和结束之间,对吗?两个查询,你就会知道是否有冲突。你没有指明你的代码库,但这是Swift文档