【问题标题】:Firebase database. Find a position in the node by record idFirebase 数据库。通过记录 id 在节点中查找位置
【发布时间】:2018-04-20 20:11:19
【问题描述】:

在我的应用中,我有一些视频,用户可以喜欢它。视频元数据保存在节点“视频”中,如下所示:

videos: {   
    xxxxx: {
      name: "Funny video",
      likes: 255,
      ....
    }
}

我还有另一个节点“userVideos”,只有视频 ID。

userVideos: {   
    xxxxx: true,
    yyyyy: true,

}

我想在 UI 中显示视频的排名。例如,我有 5 个视频:v01 有 5 个赞,v02 - 10、v03 - 1、v04 - 100、v05 - 3。

所以,当我从 userVideos 获取 id 为“v03”的视频时,我应该知道他的排名是 5(因为如果我使用 orderBy DESC 获取视频列表我的视频节点,v03 的位置是 5)。

我认为云函数应该计算这个排名。 我的问题是下一个:我是否有可能通过键获得排序节点中的位置?

【问题讨论】:

    标签: firebase firebase-realtime-database google-cloud-functions


    【解决方案1】:

    实时数据库查询无法告诉您子快照在排序查询中的位置。您必须自己编写代码来维护这些数据。

    【讨论】:

    • 就像 Doug 说的,你不能在排序查询中找到孩子的位置,但你可以做的只是 orderBy 视频观看或视频喜欢,这应该可以通过排名来排序这些视频,您可以有不同的视频类别,只需按观看次数或喜欢对每个类别进行排序
    • 应该是所有视频的全球排名。据我了解,firebase 云存储也不支持“indexOf()”?
    • 这是正确的:Firebase 实时数据库、Cloud Storage for Firebase 和 Cloud Firestore 都不支持按索引检索项目或确定项目的索引。这样做的原因是这样的操作本质上限制了系统的可扩展性,因为您必须知道(在这种情况下)所有视频的点赞数才能知道一个视频的索引/排名。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多