我正在使用firebaseui-web-react
。在注册流程中,我想在创建用户之前验证用户提供的displayName
。特别是,我想确保displayName
是唯一的。
我知道如何使用Firestore验证唯一的用户名。我有一个带有user
字段的公共displayName
集合。我知道如何查看displayName
是否已被占用,并带有如下查询:
const snapshot = await store
.collection('user')
.where('displayName', '==', displayNameFormValue)
.get()
return snapshot.empty
我想在创建用户之前验证displayName
。我想避免创建并立即删除用户。我想在FirebaseUI发送创建用户的请求之前验证displayName
。
但是,FirebaseUI仅提供类似signInSuccessWithAuthResult
的回调。这些回调仅在创建用户之后运行。如果我使用这些回调来验证displayName
,则如果使用了displayName
,则必须追溯删除创建的用户。我想在创建用户的displayName
之前对其进行验证,以避免删除。
在创建Firebase用户之前,如何使用上面显示的查询来验证displayName
?在利用预制的FirebaseUI组件和上下文时,如何支持唯一的显示名称?如何将表单验证与FirebaseUI集成在一起?
如documentation中所述:
当前,FirebaseUI不提供开箱即用的自定义功能。但是,小部件周围的HTML不受其影响,因此您可以在小部件容器周围显示所需的所有内容。
因此,您无法添加预挂接,验证等。但是,您可以尝试使用xhr-intercept或fetch-intercept拦截请求,并在有创建用户请求时执行您想要的任何操作。如果displayName
不是唯一的,则可以取消请求,并通过JS显示错误。