想象一下像Airbnb这样的应用程序。 rentals
集合包含带有类型为时间戳记的字段start
和end
的文档,这些文档记录租借的开始日期和结束日期(仅年,月和日)。在我的Flutter应用程序中,当用户想要提出新的租赁请求时,我需要检查该请求是否干扰任何现有的租赁。存储包含天数的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日之后开始的最近租赁。但是,我遇到的问题是如果租金第一的用户决定将其租金从1月1-2日延长至1月1-3日(在我们的用户能够刷新其应用之前)?或者,如果某个特定的列表没有与之相关的租赁历史记录。