Cloud Firestore:根据时间戳查询商品的可用性

时间:2019-07-06 03:17:14

标签: firebase google-cloud-firestore data-modeling

想象一下像Airbnb这样的应用程序。 rentals集合包含带有类型为时间戳记的字段startend的文档,这些文档记录租借的开始日期和结束日期(仅年,月和日)。在我的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 3arrayContains: Jan 4查询文档,如果它返回任何文档,那么我知道租赁请求日期无效。用户可以租用的最大天数是27天,尽管我希望平均租用时间能持续7天以下。我的方法可行吗?我可以将最长租赁期限从27更改为14。

我想到的另一种方法是在所需接送时间之前和之后立即查询租金。因此,使用上面的示例,如果我希望的租赁日期是1月3-4日,我将查询在1月3日之前结束的最近租赁以及在1月4日之后开始的最近租赁。但是,我遇到的问题是如果租金第一的用户决定将其租金从1月1-2日延长至1月1-3日(在我们的用户能够刷新其应用之前)?或者,如果某个特定的列表没有与之相关的租赁历史记录。

0 个答案:

没有答案