Firebase 数据库结构 - 存储用户 activity 以自定义视图和权限
Firebase database structure - storing user activity in order to customize views and permission
第一次使用 Firebase 并寻求为我的项目设置正确结构的建议,该项目基本上是一个 "offers/coupon" 类型的入门项目。
场景是这样的:
我有一个包含用户可用的所有优惠列表的节点
在 Firebase 身份验证成功后向用户显示此优惠列表
当用户兑换优惠时,我希望能够 count/record 在用户下的子节点中 activity 并隐藏该优惠,以便他们看不到它再次使用一次。
我的问题是,考虑到优惠可能会添加、可能会过期或可能在未来某个时间点发生变化,最好的方法是什么。因此,实际上,用户应该收到最新报价列表,减去 he/she 过去使用过的报价。
a) 有一个主报价列表,然后 运行 一个 cloud/server 函数为每个新用户克隆这个列表会更有效吗
Firebase Structure 1
或
b) 在一个节点中保留报价的主列表,然后跟踪用户特定的报价使用情况
Firebase Structure 2
感谢您的指导
第二种方案很好。因为在第一个中,我们的数据库中存在数据冗余。第二个显然消除了那个原因。
但不要使用 true 或 false 因为它只显示你,"it's available or not",所以你可以使用字符串类型参数为 "expired"、"going to expire" 和 "updated" 或其他任何东西。所以。将能够跟踪与特定用户的报价相关的所有信息。我想这也是你的要求。
编码愉快。
第二种解决方案更好,因为您可以节省带宽。这种做法称为 denormalization
,是 Firebase 的常见做法。第一个解决方案不好,因为每次你想显示你下载不必要数据的用户。如果您想了解有关如何以高效方式构造 Firebase 数据库的更多详细信息,请阅读此 post、Structuring your Firebase Data correctly for a Complex App. Also, you can take a look a this tutorial, Denormalization is normal with the Firebase Database,以便更好地理解。
第一次使用 Firebase 并寻求为我的项目设置正确结构的建议,该项目基本上是一个 "offers/coupon" 类型的入门项目。
场景是这样的:
我有一个包含用户可用的所有优惠列表的节点
在 Firebase 身份验证成功后向用户显示此优惠列表
当用户兑换优惠时,我希望能够 count/record 在用户下的子节点中 activity 并隐藏该优惠,以便他们看不到它再次使用一次。
我的问题是,考虑到优惠可能会添加、可能会过期或可能在未来某个时间点发生变化,最好的方法是什么。因此,实际上,用户应该收到最新报价列表,减去 he/she 过去使用过的报价。
a) 有一个主报价列表,然后 运行 一个 cloud/server 函数为每个新用户克隆这个列表会更有效吗
Firebase Structure 1
或
b) 在一个节点中保留报价的主列表,然后跟踪用户特定的报价使用情况
Firebase Structure 2
感谢您的指导
第二种方案很好。因为在第一个中,我们的数据库中存在数据冗余。第二个显然消除了那个原因。
但不要使用 true 或 false 因为它只显示你,"it's available or not",所以你可以使用字符串类型参数为 "expired"、"going to expire" 和 "updated" 或其他任何东西。所以。将能够跟踪与特定用户的报价相关的所有信息。我想这也是你的要求。
编码愉快。
第二种解决方案更好,因为您可以节省带宽。这种做法称为 denormalization
,是 Firebase 的常见做法。第一个解决方案不好,因为每次你想显示你下载不必要数据的用户。如果您想了解有关如何以高效方式构造 Firebase 数据库的更多详细信息,请阅读此 post、Structuring your Firebase Data correctly for a Complex App. Also, you can take a look a this tutorial, Denormalization is normal with the Firebase Database,以便更好地理解。