【问题标题】:how to fetch documents from one month old only firestore如何从仅一个月大的 Firestore 中获取文件
【发布时间】:2020-07-22 07:11:17
【问题描述】:

我正在查询仅获取 1 个月大的文档。

我存储文档本身的创建时间

timestamp : 9 Apr, 2020 10:03:43 AM

现在,在我的查询中,我想获取当月的所有文档,但我不想使用客户端的 currentDate(因此无法更改),但我也不想查询该文档以查找时间戳那个文件

查询

FirebaseFirestore.getInstance().collection("orders").whereEqualTo("shopId",shopId)
                .whereEqualTo("status", 7).startAt().endAt().get().await()

我想知道一个有效的服务器近似值设置为.startAt().endAt() 以仅查询状态为 7 且已过去 1 个月的文档

有什么想法吗?

【问题讨论】:

    标签: android firebase kotlin google-cloud-firestore


    【解决方案1】:

    Firestore 不提供基于服务器时间意义限制文档范围的时间盒查询。您必须相信客户端发送的时间正确。

    随着时间的推移,您唯一可以控制的是在安全规则中使用request.time。您可以编写规则以允许仅在基于服务器时间戳的时间范围内的查询,但仍由客户端在查询中正确指定时间。规则将无法根据时间过滤结果。

    您可能想在this article 末尾阅读更多有关服务器时间戳如何与安全规则配合使用的信息。

    【讨论】:

    • 非常感谢道格!这可能会给我的应用带来一些安全问题,因为我需要从客户那里知道当前日期实际上是让他们支付账单的正确日期,如果他们更改当前时间,我将失去销售
    • 您在文章中提到的令牌有一件事,为什么firebase不将该令牌存储在用户发送请愿书的当前时间而不是生成该请愿书点击的时间服务器 ?这是否解决了比我们刚刚发送的时间更晚的问题?关于 Leap,如果我们可以从当前的 post 请求中获取时间,是否有必要?
    • 道格,你能帮我多做一点吗?我真的需要做这个时间盒查询,无论如何可以接近这个吗?
    • 除了我在那篇文章中写的内容之外,我无能为力。
    • 我知道道格,但我知道你可以引导我找到答案,但实际上我更愿意对这个问题进行任何近似而不是使用规则
    猜你喜欢
    • 2020-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多