gpt4 book ai didi

javascript - Firestore 使用数据库/服务器时间进行查询

转载 作者:行者123 更新时间:2023-12-03 00:44:58 24 4
gpt4 key购买 nike

我在 Firestore 中有一个集合,其中包含接下来 365 天的字符串。它实际上是我们的应用程序需要在特定日期显示的代码字。

我们注意到,如果用户更改日期并返回应用,Firestore 会正确返回当天的代码字,因为我们的查询使用今天的日期来查询代码字。

以前,我们在服务器上有一个定制的 API,它会根据服务器的时间进行获取,以确保这种情况不会发生。

使用 Firestore 复制此行为的最佳方法是什么?我能想到的唯一方法是停止将所有数据存储在数据库中,并每天从服务器托管文件中注入(inject)数据。这很可能是最好的方法,但想在选择此解决方案之前提出问题。

这是我们当前的查询

const codeword = await firebase
.firestore()
.collection('emoji')
.where('valid_from', '>=', new Date())
.limit(1)
.orderBy('valid_from', 'asc')
.get();

// today's codeword is "whatever" based on the client time
// ... can I use the server's time instead?

最佳答案

您不能在查询中使用服务器的时间,因为您查询的值必须来自客户端。但是您可能可以保护数据,只允许用户读取“今天”的数据。由于您会在 Firestore 的服务器端安全规则中执行此操作,因此您可以在其中使用服务器端时间戳。

您当前的查询可以通过query-filter based on document fields来保护。和 request.time字段。

您还可以考虑放弃查询,只在每个日期创建一个文档,即使用类似于 2018-11-13 的 ID,然后:1) 让客户端请求今天的文档, 2) 在安全规则中限制对该特定文档的访问。

关于javascript - Firestore 使用数据库/服务器时间进行查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53283805/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com