Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/470.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在子系统上使用orderByChild';s儿童';s值_Javascript_Firebase_React Native_Firebase Realtime Database - Fatal编程技术网

Javascript firebase在子系统上使用orderByChild';s儿童';s值

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" : { "

我正在用react native构建一个应用程序。我想按
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
等。请更新您的问题以显示您尝试过的代码,包括您如何处理快照。