我无法以反序原生的方式从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')”,但没有运气。
答案 0 :(得分:0)
在Firebase文档中,orderByChild
的查询按以下顺序返回列表: -
指定子键值为null的子项首先出现。
接下来是指定子键值为false的子节点。如果多个子项的值为false,则按键按字典顺序排序。
接下来是指定子键值为true的子节点。如果多个子项的值为true,则按键按字典顺序排序。
接下来是具有数值的儿童,按升序排序。如果多个子节点具有指定子节点的相同数值,则按键对它们进行排序。
字符串在数字之后出现,并按字典顺序按升序排序。如果多个子节点具有指定子节点的相同值,则按键按字典顺序排序。
对象排在最后,按字典顺序按键按升序排序。
因此,请注意,当您的数据具有数值时,它会以升序顺序返回。现在您已了解数据的检索顺序,您只需对客户端应用程序进行更改即可反向显示数据(按降序排列)。也许反转你的名单或类似的东西?