【问题标题】:Unshifting / Adding to Front of Firebase Object Using AngularFire or Vanilla JavaScript使用 AngularFire 或 Vanilla JavaScript 取消移位/添加到 Firebase 对象的前面
【发布时间】:2014-08-14 20:14:12
【问题描述】:

我有一个存储在 Firebase 上的数组/对象,我使用 AngularFire 的 $add 函数添加项目。 $add 相当于在常规 JavaScript 数组上使用 .push。您指定的值将添加到数组的末尾。

有没有办法将我的值添加到存储在 Firebase 上的这个数组/对象的前面?与原版 JavaScript 中的 .unshift 做同样事情的东西?

我更喜欢 AngularFire 解决方案,但如果没有原生 JavaScript 解决方案也可以。

【问题讨论】:

    标签: angularjs firebase angularfire


    【解决方案1】:

    由于数据没有存储在数组中(在下周发布的 AngularFire 0.8 之前),并且对象在 js 中未排序,因此在技术上没有前/后的概念。这在 Firebase 中通过对数据键进行排序或使用优先级来实现。 See ordered data 了解有关此主题的更多信息。

    在 AngularFire 中,优先级以 $priority 的形式存储在记录中。您可以在保存记录之前设置此值以控制其排序顺序:

    var data = $firebase(ref);
    data.$on('loaded', function() {
       data['foo'].$priority = 99;
       data.$save('foo');
    });
    

    要将项目放在列表的首位,您只需为其分配比其他记录更小的优先级。

    【讨论】:

    • 我知道 Firebase 不支持存储数组,只支持对象,但如果您在客户端使用数组,数据也会“移植”到数组和从数组中“移植”。我希望这个“移植”过程会产生类似索引的数组,但听起来情况并非如此
    • 这是Array Best Practices 上的博客,涵盖了 Firebase 方面。在 AngularFire 中,一切都是对象,直到 0.8,你可以调用 asArray() 函数。
    猜你喜欢
    • 2013-11-23
    • 2017-05-16
    • 1970-01-01
    • 1970-01-01
    • 2018-12-29
    • 2014-08-24
    • 2017-03-05
    • 2021-02-21
    • 1970-01-01
    相关资源
    最近更新 更多