首先在firebase中订购新职位



我正在从firebase检索数据并将其存储到列表项中。但我想改变顺序,这将在高层带来新的职位。我应该添加什么才能使它以这种方式工作?Js我的代码报价

这是我检索数据的功能

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);
});
})
}

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

有两种常见的解决方法:

  1. 在数据中包含一个倒置的时间戳,并对其进行排序
  2. 在客户端反转结果

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

userListUI.prepend($li);

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

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

点击此处了解更多

最新更新