Firebase - 根据服务器时间订购商品

时间:2014-08-06 12:53:12

标签: firebase

我希望根据服务器写入时间将用户注释维护为有序列表。关于这一点的几个问题:

  1. 我可以根据ServerValue.TIMESTAMP创建(设置/推送)位置吗?

  2. 我可以使用规则验证(1)吗?

  3. 我能否安全地假设在相同的时间"中没有两个帖子会被写入,会超越对方?

  4. 如果我决定使用setWithPriority,而不是按位置名称排序,我可以使用ServerValue.TIMESTAMP作为优先级(并按规则验证....)

  5. "红利"问题 - 还没有办法在firebase中创建COUNT查询吗?

  6. ===编辑===

    我试图实现类似聊天的功能。必须按时间顺序(通过服务器端时间戳)对消息进行排序,以便维持"讨论" (如果我使用客户端生成的订单,那么本地的机器时钟偏移可能会破坏整个讨论)。我可以使用规则来验证ServerValue.TIMESTAMP字段是否持久保存到任何新消息,但是,我似乎找不到确保客户端实际使用setWithPriority()以保持数据的方法。我无法找到任何方法来做到这一点 - 我错过了什么吗?

1 个答案:

答案 0 :(得分:4)

  1. 您可以.push()生成自动ID作为密钥,也可以.setWithPriority()您的密钥可以是任何内容,优先级也可以是几乎任何东西。据我所知,没有选择serverValue.TIMESTAMP作为关键。唯一的方法是检索它并使用.child(retrievedTime).set(someData)

  2. 将其明确设置为密钥
  3. 见1)

  4. 由于没有将servervalue设置为关键字的选项,因此不确定您的意思,但恕我直言,这就是原因之一。

  5. 您可以在数据库上使用某个字段并设置ServerValue.TIMESTAMP并监听更改 - 在回调中,您将获得最新的服务器时间,因为占位符已替换为{{1} }。但是不能保证它会是独一无二的。拥有相同优先级的记录是完全合法的。

  6. 承诺,但尚未提供。您可以在每次写入/删除时手动执行事务,请参阅docs