【问题标题】:Firebase query in desc order based on timestamp [duplicate]基于时间戳的 desc 顺序的 Firebase 查询 [重复]
【发布时间】:2017-12-10 19:39:40
【问题描述】:

我在使用 react native 从 firebase 和 javascript 中按 desc 顺序返回对象数组时遇到问题。我本质上是“加入”两个火力基地父母,然后将他们推入一个阵列。

async loadChats(userId){

 this.chatIdRef = firebase.database().ref("members");
 this.chatIdRef.off();
 this.chatsRef = firebase.database().ref("chats");
 this.chatsRef.off();

 items = [];
 this.chatIdRef.child(userId).on('child_added', snap => {
 this.chatsRef.child(snap.key).startAt().on('value', snapshot => {

    items.push({
      receiverId: snap.val().userId,
      timeStamp: snapshot.val().createdAt,
      name: snap.val().userName,
      key: snapshot.key
    });

  this.setState({
    dataSource: this.state.dataSource.cloneWithRows(items)
  });

  });
 });
}

我尝试在查询中使用“orderByChild('createdAt')”,但没有成功。

【问题讨论】:

标签: javascript firebase react-native firebase-realtime-database nosql


【解决方案1】:

在 Firebase 文档中,使用 orderByChild 的查询按以下顺序返回列表:-

指定子键为空值的子项优先。

接下来是指定子键值为 false 的子项。如果多个子节点的值为 false,则它们按字典顺序键排序。

接下来是指定子键值为 true 的子项。如果多个子节点的值为 true,则它们将按字典顺序键排序。

具有数值的孩子紧随其后,按升序排列。如果指定子节点的多个子节点数值相同,则按key排序。

字符串在数字之后并按字典顺序升序排序。如果指定子节点的多个子节点具有相同的值,则它们按字典顺序键排序。

对象排在最后,并按关键字按字典顺序升序排序。

所以,从上面,请注意当你的数据有数值时,它是按升序的顺序返回的。既然您知道检索数据的顺序,您只需对客户端应用程序进行更改以反向显示数据(按降序排列)。也许颠倒你的列表或类似的东西?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-23
    • 2014-08-21
    • 1970-01-01
    相关资源
    最近更新 更多