生成随机的Firebase身份验证UID以从Firestore查询随机用户文档?

时间:2018-12-01 23:11:32

标签: javascript firebase firebase-authentication google-cloud-firestore

我正在尝试从Firebase Firestore查询随机用户文档。

我在Firestore中使用Firebase Auth UID作为id,所以我的用户ID是20个字符的UID,而不是20个字符的UID。

要获取随机文档,我想执行以下操作:

const randomId = firestore.collection.doc().id

// ... all the query logic 

.where(firebase.firestore.FieldPath.documentId(),'>',randomId)

如果未找到任何内容,我将重复此过程。 (如提到的here)。

如果我有一个随机生成的Firebase ID,这将非常有用。但是,由于我具有Firebase Auth ID(较长),该过程实际上无法正常工作,并且某些文档从未显示。

所以我认为我可以自动生成Firebase Auth UID,但这似乎不起作用。

像这样的事情会很方便:

const randomId = firebase.auth().generateRandomUid()

所以我的问题:

  1. 有没有一种方法可以自动生成Firebase Auth UID,而无需实际创建用户?
  2. 是否有更好的方法以UID为ID从Firestore查询随机文档?

不能更改ID,我想避免为此生成单独的字段。

2 个答案:

答案 0 :(得分:0)

  

有没有一种方法可以自动生成Firebase Auth UID,而无需实际创建用户?

不,没有。身份验证过程成功结束后,将生成Firebase Auth UID。换句话说,一旦成功创建Firebase用户对象,便会获得该UID。因此,如果不创建用户,就无法获取Firebase Auth UID。

  

是否有更好的方法以UID为ID从Firestore查询随机文档?

如果您不想使用Firebase Auth UID,则可以使用在调用doc()函数时生成的随机密钥。如果您要在其他集合而不是用户集合中添加文档,则使用此功能更为方便。

还有另一个uid可以生成,但是由于身份验证过程而再次出现。因此,您可以检查Authenticate with Firebase Anonymously Using JavaScript

答案 1 :(得分:0)

创建用户文档时,添加一个名为randomSeed或类似名称的字段。

在此字段中,您将添加您选择生成方式的唯一ID。 现在,当您想获得随机用户时,请按照问题中的说明使用该字段

// ... all the query logic 

.where('randomSeed,'>',randomId)