gpt4 book ai didi

javascript - React Native 上的 Firebase orderByChild

转载 作者:行者123 更新时间:2023-11-30 19:44:35 24 4
gpt4 key购买 nike

我在 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('letter')。我可能缺少什么?

最佳答案

显然在 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) })
})

Because of the way JavaScript objects work, the ordering of data in the JavaScript object returned by val() is not guaranteed to match the ordering on the server nor the ordering of child_added events. That is where forEach() comes in handy. It guarantees the children of a DataSnapshot will be iterated in their query order.

https://firebase.google.com/docs/reference/js/firebase.database.DataSnapshot#forEach

关于javascript - React Native 上的 Firebase orderByChild,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55058736/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com