Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 基于时间戳的描述顺序Firebase查询_Javascript_Firebase_React Native_Firebase Realtime Database_Nosql - Fatal编程技术网

Javascript 基于时间戳的描述顺序Firebase查询

Javascript 基于时间戳的描述顺序Firebase查询,javascript,firebase,react-native,firebase-realtime-database,nosql,Javascript,Firebase,React Native,Firebase Realtime Database,Nosql,我在使用react native从firebase和javascript返回desc顺序的对象数组时遇到问题。我基本上是“加入”两个firebase父母,然后将他们推到一个阵列中 async loadChats(userId){ this.chatIdRef = firebase.database().ref("members"); this.chatIdRef.off(); this.chatsRef = firebase.database().ref("chats"); this.

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

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'),但没有成功。

从Firebase文档中,使用
orderByChild
返回列表进行查询,顺序如下:-

对于指定的子键,具有空值的子项首先出现

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

接下来是指定子键的值为true的子项。如果多个子项的值为true,则会按关键字按字典顺序对它们进行排序

接下来是具有数值的子项,按升序排序。如果指定子节点的多个子节点具有相同的数值,则它们将按键排序

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

对象排在最后,按字母顺序按键升序排序


因此,从上面可以看出,请注意,当您的数据具有数值时,它将按升序返回。现在,您已经知道了检索数据的顺序,只需对客户端应用程序进行更改,即可反向显示数据(按降序)。可能会反转您的列表或类似的内容?

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

对于指定的子键,具有空值的子项首先出现

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

接下来是指定子键的值为true的子项。如果多个子项的值为true,则会按关键字按字典顺序对它们进行排序

接下来是具有数值的子项,按升序排序。如果指定子节点的多个子节点具有相同的数值,则它们将按键排序

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

对象排在最后,按字母顺序按键升序排序


因此,从上面可以看出,请注意,当您的数据具有数值时,它将按升序返回。现在,您已经知道了检索数据的顺序,只需对客户端应用程序进行更改,即可反向显示数据(按降序)。可能会反转列表或类似内容?

Firebase数据库查询会按升序返回项目。没有内置的运算符来反转该顺序。您可以在客户端反转结果,也可以在数据模型中添加具有反转值(即,-1*时间戳)的属性。前面的问题包括:、、或其中任何一个。使用负时间戳非常有效。ThanksI已使用。按从最新到最旧的顺序对元素进行反向排序。Firebase数据库查询以升序返回项目。没有内置的运算符来反转该顺序。您可以在客户端反转结果,也可以在数据模型中添加具有反转值(即,-1*时间戳)的属性。前面的问题包括:、、或其中任何一个。使用负时间戳非常有效。ThanksI使用。将元素从最新到最旧进行反向排序。