【问题标题】:Cloud Firestore: how to reference another document?Cloud Firestore:如何引用另一个文档?
【发布时间】:2018-06-30 14:58:21
【问题描述】:

我正在使用 Angularfire2。假设我有一个 userscomments 集合。添加评论时,引用创建评论的用户的正确方法是什么?起初我以为我可以简单地创建一个具有如下结构的评论:

{
    message: string,
    user: {
        uid: string,
        username: string,
        ...
    }
}

但是问题是如果用户更新他的个人资料,那么这里的数据就会不正确。是否可以在创建评论时简单地提供用户的 id,在查询 cmets 时获取整个用户的数据?

【问题讨论】:

    标签: angular firebase angularfire2 google-cloud-firestore


    【解决方案1】:

    这完全取决于您。如果您想像现在一样复制数据,您肯定必须找到一种方法来确保所有副本都是最新的。如果您只想存储一个 uid(文档 ID),那么您将花费第二次文档提取来获取消息的用户详细信息。您实际上是在成本、速度和复杂性之间进行权衡,并且没有真正的“正确方法”来做到这一点。

    【讨论】:

      【解决方案2】:

      使用 firestore,您可以将该字段保存为 DocumentReference,它是另一个集合中文档的引用。这使得字段在“评论”可观察对象中充当它自己的可观察对象。本文演示了在设置或更新文档时如何设置参考路径:https://groups.google.com/forum/m/#!topic/firebase-talk/UTgW7WwKFTU

      Firestore 提供了此处解释的各种本机支持的数据类型:https://firebase.google.com/docs/firestore/manage-data/data-types

      希望对你有帮助!

      【讨论】:

        猜你喜欢
        • 2018-08-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-02-20
        • 2018-06-18
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多