【问题标题】:Firebase >> User Favorites ListFirebase >> 用户收藏列表
【发布时间】:2018-06-12 13:54:22
【问题描述】:

我的应用需要一点帮助。我不是要讲义,只是一些关于从哪里开始的指导。基本理念是让已登录的用户能够收藏视频,并在登录后保留这些视频。

我的应用使用 YouTube API(播放列表项)在我的应用中显示来自我的公共播放列表的视频。我正在使用 firebase auth 来注册和登录用户,但我还没有实现 RTD。这就是我在构建数据和组织应用时需要一些帮助的地方。

我不想默认为每个用户创建收藏列表,我也不想存储错误值并且必须循环访问它们。如果用户请求这样做,我只想设置一个收藏夹列表,并且值是 true。我愿意接受有关构建数据的建议,但我的想法很简单:

"favorites": {
    "John Doe": {
        "video1ID": true,
        "video2ID": true,
    }
}

使用 API 响应中的 .each 函数将视频包含在卡片中。这些卡片中包含“最喜欢的”切换开关,我希望用户能够切换并将喜欢的视频添加到他们的列表中。

YouTube 在其 JSON 响应中提供视频 ID。我在想为该视频 ID 分配一个布尔值可以完成工作,但我不知道从哪里开始。

类似:

function writeFavoritesList (name, videoID, toggleValue) {
firebase.database().ref('favorites/' + userId).set({
name: displayName,
videoID: videoID,
toggleValue: true
});
}

我对 WordPress 之外的任何东西都非常陌生,所以我希望我走在正确的轨道上。任何帮助表示赞赏。谢谢! :)

【问题讨论】:

    标签: javascript jquery firebase firebase-realtime-database


    【解决方案1】:

    看起来很棒。如果这是另一个数据库,您可以考虑将视频 ID 存储在一个数组中,但这是 firebase 实时数据库,您最好使用已经拥有的对象。

    如果您打算对您最喜欢的视频进行排序,您可以稍微修改您的结构以利用 RTD 的 push() 密钥生成。为此,您可以使用 firebase 的 push() 密钥生成生成密钥并将值设为 videoID,而不是将密钥设为 videoID 并将值设为布尔状态。 “由 push() 生成的唯一键按当前时间排序,因此生成的项目列表将按时间顺序排序。键也被设计为不可猜测(它们包含 72 个随机位的熵)。”

    "favorites": {
        "uid1": {
            "uniqueKey1": videoID1,
            "uniqueKey2": videoID2,
        }
    }
    

    要生成 push() 密钥,请使用:const key = firebase.database().ref().push().key

    更多信息:https://firebase.google.com/docs/reference/js/firebase.database.Reference#push

    【讨论】:

      【解决方案2】:

      看到你的Guru 帖子。我认为您学习的最佳方式是深入研究文档并自己弄清楚。如果您真的致力于学习这些东西,那么让其他人为您编写代码会对您自己造成伤害。

      我将从 GCP(Google Cloud Platform)云火存储文档开始,并通读“概念”部分的全部内容: https://cloud.google.com/firestore/docs/concepts

      firebase 站点反映了 GCP 文档的部分内容,但也涵盖了客户端实现: https://firebase.google.com/docs/firestore/

      要充分利用这些文档,请使用左侧的导航侧边栏深入了解所有各种 Cloud Firestore 主题。他们介绍了如何构建数据库并提供示例代码供您分析和使用。

      您会看到很多术语DocumentsCollectionsDocument 在某种程度上等同于 JSON 对象。 Collection 是文档列表;类似于 JSON 对象的数组。但这就是事情变得有趣的地方; 文档可以引用Collections(又名Subcollections):

      所以我将按如下方式构建您的数据库:

      • 创建一个用户集合

      • 每当新用户登录您的应用时,创建一个 user 文档并将其添加到 Users 集合中。

      • 当用户第一次选择喜欢的视频时,创建一个Favorites集合并将其添加到user文档中;然后将 favorite 文档添加到该用户的 Favorites 集合中

      有一个 Javascript/Web 客户端(您似乎已经从我在 Guru 上提供的 repo 链接中看到的内容加载了它)。这是它的参考文档: https://firebase.google.com/docs/reference/js/firebase.firestore 这些参考文档中定义的类、方法和属性是您将从 jquery 代码块中调用的内容。

      祝你好运并坚持下去。

      【讨论】:

      • OP 提到 Firebase 而不是 Firestore,仅供参考。 :-)
      • @Joel OP 决定稍后使用 Firestore,如 Guru 链接中所述(在他在堆栈上发帖一个月后)。不打算在大师身上浪费我的学分,我想我会在这里插话。感谢您的“仅供参考”。
      猜你喜欢
      • 1970-01-01
      • 2018-09-04
      • 2016-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-13
      • 2017-02-11
      • 2020-05-28
      相关资源
      最近更新 更多