【发布时间】:2020-05-03 03:36:48
【问题描述】:
我很难理解为什么这个简单的查询没有给我预期的结果。
在我的 Firebase 实时数据库中,我的结构如下所示:
很简单,对吧?接下来,我有一个云功能,只要我手动更改任何用户下的orbs 值之一,它就会运行。这是我的功能:
exports.testTopPlayers2 = functions.database.ref('/TestUsers/{user}/Statistics').onUpdate(_ => {
const allPlayersRef = admin.database().ref('/TestUsers');
const query = allPlayersRef.orderByChild('orbs').limitToLast(2)
return query.on('value', (snap, context) => {
return console.log(snap.val());
})
我认为也非常简单。在普通英语中,我期望该函数执行的是:“当任何 orbs 值发生更改时,运行此函数以按所有用户的 orbs 值(从最低到最高)排序并获取新的 DataSnapshot仅最后 2 个用户的数据(orb 数量最多的用户)”。
当我打印到控制台时,我希望看到来自 User3 和 User6 的数据,因为它们的球体数量最多......但它似乎是按用户名排序的 (@987654330 @ & User6) 或者根本不排序。这是日志输出:
这显然没有按照我在查询中定义的内容进行排序。
也许我遗漏了一些明显的东西,但我已经盯着它看够久了......希望有人能在我的函数中发现关于它如何排序的错误。
感谢您的帮助!
【问题讨论】:
标签: javascript firebase-realtime-database google-cloud-functions