是否可以随机设置文档中尚不存在的名称?
Posted
技术标签:
【中文标题】是否可以随机设置文档中尚不存在的名称?【英文标题】:Is it possible to randomly set a name that does not yet exist in document? 【发布时间】:2021-11-26 15:35:01 【问题描述】:我将 Firebase Firestore 与 Flutter 结合使用。
在文档中设置用户的UID是很常见的,但是是否有API函数标准可以随意设置这个名称而不重复?
客户端生成随机字符串,查找与其名称匹配的文档,如果存在则重试,如果不存在则注册其名称是目前的普遍做法吗? 反正如果Firebase有这个好用的功能,我就不用这么做了。
【问题讨论】:
【参考方案1】:在文档中用用户的UID设置是常见的吗?
它更有可能被用作文档的 ID。将其存储在用户文档中不会带来任何好处。为什么?因为您始终可以从 User 对象中获取 UID,而无需创建任何 Firestore 数据库调用。
但是否存在 API 函数标准来随机设置此名称而不重复?
这确实是 Firebase 所做的。生成每个用户的唯一 UID。没有重复。
客户端生成一个随机字符串,查找与其名称匹配的文档,如果存在则重试,如果不存在则注册其名称?
不,客户端不需要生成任何随机 ID,因为 Firebase 已经这样做了。但是,没有任何内置功能可以帮助检查用户是否已经存在。您应该在应用程序代码中明确执行此操作,并根据结果创建进一步的逻辑。
反正Firebase有这个有用的功能,我就不用做这个了。
它已经有了。没有什么是你应该做的。您应该只使用提供的来自身份验证过程的 UID。
【讨论】:
感谢您的回答。但 uid 分配给每个用户。这对于管理用户信息非常有用,但它需要不同的 ID 来存储与用户无关的信息。和 twitter 一样,每条推文都有随机字符串,不管 uid。 是的,你是对的。要为用户对象以外的其他对象生成随机文档 ID,则可以使用 CollectionReference.add 函数。不要忘记它返回一个 Future 对象。除此之外,不用担心,the collisions of ids, in this case, is incredibly unlikely。以上是关于是否可以随机设置文档中尚不存在的名称?的主要内容,如果未能解决你的问题,请参考以下文章