【问题标题】:Order new posts first in firebase首先在 Firebase 中订购新帖子
【发布时间】:2021-01-13 12:40:49
【问题描述】:

我正在从 firebase 检索数据并将其存储到列表项中。但我想颠倒顺序,这将在顶部带来新帖子。我应该添加什么才能使其以这种方式工作? JsFiddle of my code

这是我检索数据的函数

const dbRef = firebase.database().ref();
const usersRef = dbRef.child('users');

readUserData(); 

// READ
function readUserData() {
    const userListUI = document.getElementById("user-list");
    usersRef.on("value", snap => {
        userListUI.innerHTML = ""
        snap.forEach(childSnap => {

            let key = childSnap.key,
                value = childSnap.val()
            let $li = document.createElement("li");
            // edit icon
            let editIconUI = document.createElement("span");
            editIconUI.class = "edit-user";
            editIconUI.innerHTML = " ✎";
            editIconUI.setAttribute("userid", key);
            editIconUI.addEventListener("click", editButtonClicked)
            // delete icon
            let deleteIconUI = document.createElement("span");
            deleteIconUI.class = "delete-user";
            deleteIconUI.innerHTML = " ☓";
            deleteIconUI.setAttribute("userid", key);
            deleteIconUI.addEventListener("click", deleteButtonClicked)     
            $li.innerHTML = value.name;
            $li.append(editIconUI);
            $li.append(deleteIconUI);
            $li.setAttribute("user-key", key);
            $li.addEventListener("click", userClicked)
            userListUI.append($li);
        });
    })
}

【问题讨论】:

    标签: javascript firebase-realtime-database


    【解决方案1】:

    虽然 Firebase 提供了确定节点返回顺序的操作,但没有按降序返回节点的操作。

    有两种常见的解决方法:

    1. 在数据中包含倒置的时间戳,并按此排序。
    2. 在客户端反转结果。

    在您的情况下,后者最简单:因为您可以pre将每条消息附加到列表中,而不是附加它:

    userListUI.prepend($li);
    

    【讨论】:

      【解决方案2】:

      使用实时数据库对数据进行排序的方法有三种。

      • orderByChild() 将按指定子键或嵌套子路径的值对结果进行排序。
      • orderByKey() 将按子键对结果进行排序。
      • orderByValue() 将按子值对结果进行排序。

      了解更多here

      【讨论】:

        猜你喜欢
        • 2018-05-21
        • 1970-01-01
        • 1970-01-01
        • 2013-03-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-10-16
        相关资源
        最近更新 更多