我希望根据服务器写入时间将用户注释维护为有序列表。关于这一点的几个问题:
我可以根据ServerValue.TIMESTAMP创建(设置/推送)位置吗?
我可以使用规则验证(1)吗?
我能否安全地假设在相同的时间"中没有两个帖子会被写入,会超越对方?
如果我决定使用setWithPriority,而不是按位置名称排序,我可以使用ServerValue.TIMESTAMP作为优先级(并按规则验证....)
"红利"问题 - 还没有办法在firebase中创建COUNT查询吗?
===编辑===
我试图实现类似聊天的功能。必须按时间顺序(通过服务器端时间戳)对消息进行排序,以便维持"讨论" (如果我使用客户端生成的订单,那么本地的机器时钟偏移可能会破坏整个讨论)。我可以使用规则来验证ServerValue.TIMESTAMP字段是否持久保存到任何新消息,但是,我似乎找不到确保客户端实际使用setWithPriority()以保持数据的方法。我无法找到任何方法来做到这一点 - 我错过了什么吗?
答案 0 :(得分:4)
您可以.push()
生成自动ID作为密钥,也可以.setWithPriority()
您的密钥可以是任何内容,优先级也可以是几乎任何东西。据我所知,没有选择serverValue.TIMESTAMP
作为关键。唯一的方法是检索它并使用.child(retrievedTime).set(someData)
见1)
由于没有将servervalue
设置为关键字的选项,因此不确定您的意思,但恕我直言,这就是原因之一。
您可以在数据库上使用某个字段并设置ServerValue.TIMESTAMP
并监听更改 - 在回调中,您将获得最新的服务器时间,因为占位符已替换为{{1} }。但是不能保证它会是独一无二的。拥有相同优先级的记录是完全合法的。
承诺,但尚未提供。您可以在每次写入/删除时手动执行事务,请参阅docs