Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/461.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_Javascript_Firebase_React Native_Firebase Realtime Database_React Native Firebase - Fatal编程技术网

Javascript 反应本机上的Firebase orderByChild

Javascript 反应本机上的Firebase orderByChild,javascript,firebase,react-native,firebase-realtime-database,react-native-firebase,Javascript,Firebase,React Native,Firebase Realtime Database,React Native Firebase,我对android上列表的排序有问题。数据库ref items/如下所示: { "11" : { "date" : "2018-11-18 10:07:00", "letter" : "F", "number" : 11 }, "12" : { "date" : "2018-11-01 14:41:00", "letter" : "B", "number" : 12 }

我对android上列表的排序有问题。数据库ref items/如下所示:

{
    "11" : {
        "date" : "2018-11-18 10:07:00",
        "letter" : "F",
        "number" : 11
    },
    "12" : {
        "date" : "2018-11-01 14:41:00",
        "letter" : "B",
        "number" : 12
    },
    "13" : {
        "date" : "2018-11-13 14:00:00",
        "letter" : "C",
        "number" : 13
    },
    "14" : {
        "date" : "2019-04-22 22:15:30",
        "letter" : "D",
        "number" : 14
    },
    "15" : {
        "date" : "2019-04-22 20:33:00",
        "letter" : "H",
        "number" : 15
    },
    "16" : {
        "date" : "2019-04-22 19:30:00",
        "letter" : "J",
        "number" : 16
    },
    "17" : {
        "date" : "2019-04-25 13:10:00",
        "letter" : "G",
        "number" : 17
    },
    "18" : {
        "date" : "2019-04-25 18:00:00",
        "letter" : "E",
        "number" : 18
    },
    "19" : {
        "date" : "2019-04-25 13:00:00",
        "letter" : "I",
        "number" : 19
    },
    "20" : {
        "date" : "2019-04-28 12:30:00",
        "letter" : "A",
        "number" : 20
    }
}
我查询如下,希望结果按字母键排序:

firebase.database().ref('items/').orderByChild('letter').on('value', snapshot => {
    let items = snapshot.val()
    Object.values(items).map(i => console.log(i.number, i.letter, i.date))
})
但我得到的结果记录如下:

11 F 2018-11-18 10:07:00
12 B 2018-11-01 14:41:00
13 C 2018-11-13 14:00:00
14 D 2019-04-22 22:15:30
15 H 2019-04-22 20:33:00
16 J 2019-04-22 19:30:00
17 G 2019-04-25 13:10:00
18 E 2019-04-25 18:00:00
19 I 2019-04-25 13:00:00
20 A 2019-04-28 12:30:00

显然orderByChild(“字母”)没有得到应用。我可能缺少什么?

显然,JavaScript中处理对象的方式存在问题,这就是为什么要使用snapshot.forEach方法来代替我正在使用的Object.values(items).map。我的听众应该是这样的:

firebase.database().ref('items/').orderByChild('letter').on('value', snapshot => {
    snapshot.forEach(c => { i = c.val(); console.log(i.number, i.letter, i.date) })
})
由于JavaScript对象的工作方式,因此 val()返回的JavaScript对象不保证与 在服务器上排序,也不排序添加的子事件。就是 其中forEach()很方便。它保证了一个家庭的孩子 DataSnapshot将按其查询顺序进行迭代


考虑将日期存储得尽可能长(数字为JS),谢谢。同时,你能测试并确认我的问题吗?