Firebase-根据服务器时间订购项目
我希望根据服务器写入时间将用户评论维护为有序列表。关于这一点,有几个问题:Firebase-根据服务器时间订购项目,firebase,Firebase,我希望根据服务器写入时间将用户评论维护为有序列表。关于这一点,有几个问题: 我可以基于ServerValue.TIMESTAMP创建(设置/推送)位置吗 我可以用规则验证(1)吗 我能安全地假设没有两篇文章会在完全“同一时刻”被写下来,并且相互覆盖吗 如果我决定使用setWithPriority,而不是按位置名称排序,我可以使用ServerValue.TIMESTAMP作为优先级(并按规则验证它…) “奖金”问题-是否仍然无法在firebase中创建计数查询 ==编辑=== 我正在尝试实现一个类
.push()
,也可以.setWithPriority()
,其中密钥可以是任何内容,优先级也可以是几乎任何内容。据我所知,没有选择将serverValue.TIMESTAMP
作为键。唯一的方法是使用.child(retrievedTime).set(someData)
servervalue
设置为键,但我想这是原因之一ServerValue.TIMESTAMP
并侦听更改-在回调中,您将很快获得最新的服务器时间,因为占位符被替换为TIMESTAMP
。然而,不能保证它是独一无二的。拥有相同优先级的记录是完全合法的.push()
,也可以.setWithPriority()
,其中密钥可以是任何内容,优先级也可以是几乎任何内容。据我所知,没有选择将serverValue.TIMESTAMP
作为键。唯一的方法是使用.child(retrievedTime).set(someData)
servervalue
设置为键,但我想这是原因之一ServerValue.TIMESTAMP
并侦听更改-在回调中,您将很快获得最新的服务器时间,因为占位符被替换为TIMESTAMP
。然而,不能保证它是独一无二的。拥有相同优先级的记录是完全合法的#3是一个很大的“不”。如果您的应用程序被广泛采用,则此声明将无法维护。相反,我只需使用
push
来保证唯一性,并将时间戳保留在一个值中,和/或将其设置为优先级。这些都是一本很好的读物,可以让你快速了解这些事情。@frank van puffelen,“推送”不是依赖于客户端时间戳吗?如果是这样的话,我如何才能确保订单得到保持?push
只保证一个唯一的id。如果您使用服务器端时间戳来设置优先级,您可以使用它来维护订单。但是这种时间戳并不能保证唯一性:两个人的信息可能在同一时刻到达服务器。@FrankvanPuffelen-谢谢,我理解你的意思。但是现在,我有一个问题,我需要依靠客户端来设置优先级。如果没有这个假设,我有没有办法得到按时间顺序排序的消息列表?我可以要求FB根据ServerValue.TIMESTAMP字段给我消息吗?#3是一个很大的“否”。如果您的应用程序被广泛采用,则此声明将无法维护。相反,我只需使用push
来保证唯一性,并将时间戳保留在一个值中,和/或将其设置为优先级。这些都是一本很好的读物,可以让你快速了解这些事情。@frank van puffelen,“推送”不是依赖于客户端时间戳吗?如果是这样的话,我如何才能确保订单得到保持?push
只保证一个唯一的id。如果您使用服务器端时间戳来设置优先级,您可以使用它来维护订单。但是这种时间戳并不能保证唯一性:两个人的信息可能在同一时刻到达服务器。@FrankvanPuffelen-谢谢,我理解你的意思。但是现在,我有一个问题,我需要依靠客户端来设置优先级。如果没有这个假设,我有没有办法得到按时间顺序排序的消息列表?我可以要求FB根据ServerValue.TIMESTAMP字段给我消息吗?4-可以使用setWithPriority(data,Firebase.ServerValue.TIMESTAMP)将ServerValue设置为优先级,我认为这是这里的问题。5-或在抓取记录后在客户端上使用snapshot.numChildren()@加藤雷。snapshot.numChildren()-对于包含20 mil+子级的快照,情况如何?你会用它吗?