我正在尝试从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()
所以我的问题:
不能更改ID,我想避免为此生成单独的字段。
答案 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)