是否可以随机设置文档中尚不存在的名称?

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。

以上是关于是否可以随机设置文档中尚不存在的名称?的主要内容,如果未能解决你的问题,请参考以下文章

如何为vagrant中尚不存在的用户安装目录

jquery 验证尚未创建的元素

是否可以使用尚不存在的参数传入函数?

仅当实体尚不存在时,我是不是可以在 CloudFormation 中设置属性?

如果不存在则插入:SQLite

使用 Typescript 在 Mongoose 中缺少子文档方法