有没有办法更新优先级而无需PUT删除所有数据?

时间:2013-11-21 21:16:14

标签: firebase angularfire

两个问题:首先,通过REST更新'.priority'的唯一方法是使用PUT,这会强制您重写所有其他值吗?而且我不敢问,但这也适用于Javascript SDK吗?

其次,除了使用优先级来订购您的集合“服务器端”之外,还有其他一些方法吗?

在客户端上对事物进行排序对我来说不起作用,因为我正在使用一个砌体类型的插件进行布局,无论何时订单改变客户端,它都会变得疯狂,但它似乎在服务器方面运行良好。我正在使用PHP来降低'.priority'值随时间的推移,降低项目在集合中的位置,但是我被迫在cron run中重写其他所有字段。它有效,但最好能够更新'.priority'或其他控制位置的值。

1 个答案:

答案 0 :(得分:1)

问题1:通过REST API的.priority

您可以通过直接调用.priority上的PUT来设置优先级而不修改记录。这些示例是found in the REST API doc

enter image description here

因此,重申一下,将.priority添加到网址中。

问题2:使用数据存储黑客攻击Angular中的砌体排序?

如果您还没有在这里探讨过您的选择,那么有几个专门用于整合砌体和角度的库,您可能想要查看(例如angular-masonry)。您也可以通过自己的SO问题直接在砌体中对数据进行排序,而不是尝试使用您的数据存储来解决它,这似乎是XY Problem

Firebase中的记录按字典顺序排序,因此您有三个选项:

  1. 为您的商品命名,以便按所需顺序排序
  2. 使用按时间顺序排列的推送ID
  3. 使用优先级来强制执行除记录ID的自然排序之外的排序顺序
  4. 请记住numeric keys, when mixed with lexicographic strings, cause behave strangely--err, by design--in Chrome. And, tangentially related, such a debate has waged that the ECMAScript standard will actually be changed to force them to correct it