Firebase 使用电话号码作为用户文档ID有什么风险?如何根据用户的电话号码有效地查询用户

Firebase 使用电话号码作为用户文档ID有什么风险?如何根据用户的电话号码有效地查询用户,firebase,google-cloud-firestore,Firebase,Google Cloud Firestore,我正在开发一个移动应用程序,用户可以用手机登录,如果有其他人的电话号码,可以邀请他们加入群组。我在Firestore中设置了以下内容 我计划写一些规则,这样用户只能编辑自己的文档。他们可以通过邀请相互邀请,这样用户就可以自己加入一个组。他们只能通过电话号码查找手机中的用户 但我想知道我是不是在玩火?使用电话号码作为文档id有什么风险?我是新来的,我想保持用户的数据尽可能安全。但我也不想对文档进行太多的查找/查询。关于如何改进我的设计有什么建议吗 使用电话号码作为用户文档ID有什么风险 只要

我正在开发一个移动应用程序,用户可以用手机登录,如果有其他人的电话号码,可以邀请他们加入群组。我在Firestore中设置了以下内容

我计划写一些规则,这样用户只能编辑自己的文档。他们可以通过邀请相互邀请,这样用户就可以自己加入一个组。他们只能通过电话号码查找手机中的用户

但我想知道我是不是在玩火?使用电话号码作为文档id有什么风险?我是新来的,我想保持用户的数据尽可能安全。但我也不想对文档进行太多的查找/查询。关于如何改进我的设计有什么建议吗

使用电话号码作为用户文档ID有什么风险

只要用户不改变他们的电话号码,这没有什么错。但如果他们会改变,你可能会有困难的时候。我这么说是因为没有办法“重命名”文档id。您可以复制同一文档并更改文档id,但这意味着新的文档读取和写入操作


相反,您可以使用的是作为文档id,它的
uid
。无论电话号码是什么,此
uid
都将始终相同

我计划写一些规则,这样用户只能编辑自己的文档

即使您使用的是
uid
,也可以实现这一点


编辑:

o用作文档id“我想根据用户集合检查用户电话簿,以查找具有相应电话号码的用户

您最初可能认为应该使用:

db.collection("users").document(phoneNumber).get();
但您可以使用查询实现完全相同的结果:

db.collection("users").whereEqualTo("phoneNumber", phoneNumber).get();
这样做时,这将是一个代价高昂的查询吗

不,您只需阅读一份文件

该查询是否算作文档读取


是的,这很重要。请注意,即使查询不生成任何文档,读取一个文档也会有成本。

“您可以改为使用文档id“我想对照用户集合检查用户电话簿,以查找具有相应电话号码的用户。这样做时,这将是一个代价高昂的查询吗?该查询是否算作文档读取?我所说的查询是指where()函数。谢谢。这个答案让我明白了一些!投了一票。很高兴听到;)