Javascript firebase在子系统上使用orderByChild';s儿童';s值
我正在用react native构建一个应用程序。我想按Javascript firebase在子系统上使用orderByChild';s儿童';s值,javascript,firebase,react-native,firebase-realtime-database,Javascript,Firebase,React Native,Firebase Realtime Database,我正在用react native构建一个应用程序。我想按createdAt值降序排列chatList 以下是我的结构: { "chatList": { "L3RDhCUvTVBk--KKgCl" : { "lastMessage": { "createdAt": 1516638900725 } }, "L3RDhCUvTVBk--KKgC1" : { "
createdAt
值降序排列chatList
以下是我的结构:
{
"chatList": {
"L3RDhCUvTVBk--KKgCl" : {
"lastMessage": {
"createdAt": 1516638900725
}
},
"L3RDhCUvTVBk--KKgC1" : {
"lastMessage": {
"createdAt": 1516638920725
}
}
}
}
此外,我是否需要索引此结构?如果您的最后一条消息始终位于聊天室下的
lastMessage/createdAt
(例如/chatList/*/lastMessage/createdAt
),则您可以通过以下方式查询聊天室列表:
firebase.database.reference("chatList").orderByChild("lastMessage/createdAt")
但你不能按降序排列。因此,您要么在客户机中反转结果,要么存储反转的时间戳。更多信息,请参见我的回答:
如果lastMessage
实际上是动态的(对于chatList
下的每个子级来说都是不同的),那么很遗憾,您无法从当前结构中获得结果,您需要增加数据以允许查询
如果您想获得按上次更新日期排序的聊天列表,那么您需要准确地将其存储在数据库中:聊天列表及其上次更新日期
{
"chatUpdates": {
"L3RDhCUvTVBk--KKgCl": 1516638900725
"L3RDhCUvTVBk--KKgC1": 1516638920725
}
}
这是一个额外的数据结构,纯粹是为了允许您的用例。因此,现在您需要在添加消息时同时更新聊天列表
和聊天更新
。要了解更多有关有效方法的信息,请参阅
一些相关问题:
firebase.database.reference(“chatList”).orderByChild(“lastMessage/createdAt”)
。但是,响应不正确。我还需要做些什么来真正对聊天列表进行排序?如.indexOn
等。请更新您的问题以显示您尝试过的代码,包括您如何处理快照。