【问题标题】:firebase order by datetime desc and asc按日期时间降序和升序排列的firebase顺序
【发布时间】:2020-10-29 22:01:38
【问题描述】:

所以我从 firebase realtime 中学到了一些新的东西用于聊天目的..

但我仍然对如何进行操作“如何通过像 php 进行排序”感到困惑

所以我有一些这样的代码

var timenow=moment().format('YYYY-MM-DD HH:m:s');
firebase.database().ref('message/notification').orderByChild("lastupdate").startAt(timenow).on('value',function(snapshot){
listuser.innerHTML+=snapshot.val().name;

});

这是我的数据库

如何使用 lastupdate 子命令限制 asc 和 desc 方法?我正在搜索主要是 android 教程的参考。

【问题讨论】:

    标签: javascript firebase firebase-realtime-database


    【解决方案1】:

    您已经在检索由他们的lastupdate 排序并从“现在”开始的数据。但是您处理结果的代码不正确。

    在回调中,您需要使用 forEach 循环访问数据库中的结果,然后将每个单独的节点添加到 HTML。看起来像这样:

    firebase.database().ref('message/notification').orderByChild("lastupdate").startAt(timenow).on('value',function(snapshot){
      listuser.innerHTML = "";
      snapshot.forEach(function(notificationSnapshot) {
        listuser.innerHTML += notificationSnapshot.val().name;
      });
    });
    

    或者,您可以侦听 child_added 事件而不是 value,这意味着 Firebase 会为添加的每个单独的子项调用您。通过收听child_added,您将不需要回调中的循环:

    firebase.database().ref('message/notification').orderByChild("lastupdate").startAt(timenow).on('child_added',function(snapshot){
      listuser.innerHTML += snapshot.val().name;
    });
    

    无法按降序从 Firebase 检索数据,因此您必须在应用程序代码中反转它。最简单的方法是更改​​将其添加到 HTML 的方式,以始终将新数据预先添加到现有 HTML:

    listuser.innerHTML = snapshot.val().name + listuser.innerHTML;
    

    最后:关于 Firebase 的问题已经有数以千计的问题,因此如果您可以根据自己的需要定制搜索,这真的很有帮助。例如:要查找有关 JavaScript 中实时数据库的问题,我倾向于 search for the combination of those tags。通过在搜索中添加更多术语,您通常可以很好地放大。例如:这些是关于querying in descending order的问题。

    【讨论】:

      猜你喜欢
      • 2020-02-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-16
      • 2010-09-19
      • 1970-01-01
      • 2011-08-25
      • 1970-01-01
      相关资源
      最近更新 更多