gpt4 book ai didi

javascript - Firebase,orderByChild 未排序

转载 作者:行者123 更新时间:2023-12-03 01:06:34 27 4
gpt4 key购买 nike

我正在尝试使用 orderByChild 对快照进行排序,但这不起作用。

Firebase 规则:

"rules": {
"community": {
"users": {
".read": true,
"$uid": {
".read": true,
".write": "$uid === auth.uid",
".indexOn": ["pseudo", "pseudoLower", "pseudoInverseLower", "films"]
}
}
}
}

数据:

"community" : {
"users" : {
"Ab" : {
"films" : 200,
"filters" : 2,
"id" : "Ab",
"pseudoBase" : "AB",
"pseudoInverseLower" : "zy",
"pseudoLower" : "ab"
},
"Bc" : {
"films" : 692,
"filters" : 4,
"id" : "Bc",
"pseudoBase" : "King",
"pseudoInverseLower" : "prmt",
"pseudoLower" : "king"
},
"Ce" : {
"films" : 100,
"filters" : 5,
"id" : "a",
"pseudoBase" : "A",
"pseudoInverseLower" : "z",
"pseudoLower" : "a"
}
}
}

JS:

db.ref('community/users').orderByChild('films').once('value', snap => {})

在用户数据中,您将检索他的伪(和逆)、他的电影长度和滤镜长度。

我尝试了 orderByChild('pseudoLower').orderByChild('films').orderByChild('pseudoInverseLower') 但没有任何结果改变了。

我现在真的陷入困境......也许我忘记了什么?

最佳答案

您需要将生成的快照转换为子级数组 - 这可以使用快照 forEach 方法来完成,这将按照查询中提供的子键的顺序迭代子级。如果您打印快照值,用户将丢失收到的顺序。

async function getCommunityUsers(filter) {

const usersRef = admin.database().ref('community/users')
const snapshot = await usersRef.orderByChild(filter).once('value')

let users = []

snapshot.forEach(child => {
users.push({
key: child.key,
...child.val()
})
return false
})

return users
}

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

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