Firestore:是否有可能在不同的子集合中拥有重复的自动生成ID?

时间:2018-04-26 22:19:47

标签: ios firebase google-cloud-firestore

我有一个Shop的集合,每个商店都有一个项目的子集合。 Item文档有一个属性isAvailable,它是一个布尔值。

然后,我需要将项目放在用户的购物车中。 请务必观察商品isAvailable值,以便实时通知商品不再可用,并自动从所有购物车中删除。

所以我决定在Item对象中放入一个用户id数组,并在db的根级创建所有对象的重复列表,以模拟一个可观察的购物车(我认为这是一个很好的方法来构建这个目的,如果你有更好的想法告诉我)。

我的问题是:由于我复制了单个集合中的所有子集合并使用相同的文档ID,因此最终的大集合中可能存在重复项,是不是?

1 个答案:

答案 0 :(得分:0)

简而言之,自动生成iD在统计上是唯一的,并且有足够的概率一直考虑它。请参阅here

同样在firestore中,基于时间的计算已被删除,因此与实时数据库相比,ID不再按时间顺序排列。

关于你的数据结构,我不建议复制,因为firestore的一个好处是避免这种情况,而实时数据库在某些情况下你需要这样做。

尽可能避免使用数组并使用该对象而不是查询它们。

据我了解,您只想确保物品可用。我建议您在用户想要结账或任何时候刷新页面时进行检查,这样您就可以确保没有购买不可用的产品。而已。

如果您仍有问题,或许请给我一份您的数据快照而不是解释,例如 ShopsCollection      - itemDocument         - isAvailable:true