如果我理解正确 [1],在 Firebase 中没有办法限制用户访问他们拥有的数据,也没有办法隐藏敏感列。这在新发布的 Firestore 中更好吗?它有解决方法吗?
我能想到的一种替代方法是通过云函数路由此类请求,以便根据需要进行过滤,而不是允许直接访问。那行得通吗?
如果我理解正确 [1],在 Firebase 中没有办法限制用户访问他们拥有的数据,也没有办法隐藏敏感列。这在新发布的 Firestore 中更好吗?它有解决方法吗?
我能想到的一种替代方法是通过云函数路由此类请求,以便根据需要进行过滤,而不是允许直接访问。那行得通吗?
Firestore(和 Firebase)并没有真正区分谁“拥有”数据。您可以制定规则来实施所有权政策,但没有任何内在因素迫使这种情况发生。
在 Firestore 中,规则适用于整个文档,因此您无法隐藏敏感列。一个典型的解决方案是在一个文档中包含公共字段,在第二个文档中包含私有字段。然后,您可以编写规则来强制对单独的文档进行不同的访问。
像这样编写多个文档时,您有几个选择。一种方法是将整个记录写入私有部分,并有一个函数过滤器并写入公共部分。这样做的缺点是在您编写私有部分和看到更新的公共部分之间存在延迟。
另一种方法是使用写入批处理以原子方式写入两个文档。与要求您在线的完整事务不同,写入批处理可以在离线时使用,并且适用于您需要对两个或更多文档进行原子更改但您不希望任何其他写入竞争的情况。用户更新他们自己的个人资料将是一个很好的例子,说明批量写入工作得很好。