将Firebase Auth用户映射到Firestore文档

36

我正在尝试使用FirebaseFirestore数据库来处理我的安卓应用中的User

最初,我想使用从Auth包返回的id(一个字符串),并将其设置为数据库中usersCollection的id。在usersCollection内创建Document时,我将uid字段设置为该认证包字符串。

我意识到无法将该字符串设置为可索引的值,以便进行以下查询:

// get Auth package uid string
db.collection("users").document(auth_uid_string);

那么,我想另一种选择是使用Query.whereEqualTo("uid", auth_uid_string),这将在列表中给出用户,因为Firestore不会假定查询的是唯一值。

我想避免上述解决方案,并想出一种方法将应用程序的users存储在firestore中,并使用auth包来验证我获取正确的用户。 这样的解决方案可能吗?还是我应该尝试一个不同的firebase服务,甚至只是在heroku上运行一个postgres服务器?

1个回答

35

我不确定如何在安卓上实现这个,但是使用JS我正在执行以下操作:

firebase.firestore().collection('users').doc(currentUser.uid).set(currentUser)

currentUser 是身份验证函数返回的用户对象(我使用signInWithCredential)。它运行得非常完美。我相信你可以在安卓中实现类似的方法。

currentUser 是身份验证函数返回的用户对象(我使用signInWithCredential)。它运行得非常完美。我相信你可以在安卓中实现类似的方法。


1
{btsdaf} - Nevermore
我不确定这是否是最佳方法,因为Firebase明确表示://用户的ID,在Firebase项目中是唯一的。//如果您有后端服务器,请勿使用此值进行身份验证。请改用getTokenWithCompletion:completion:。 - tapizquent
1
@JoseTapizquent 这是用于与您的后端服务器进行身份验证,正如评论中明确提到的那样。使用用户ID声明文档是可以的。 - Edric
我不确定这个还能用。我认为currentUser不可序列化。我收到了FirebaseError: Function DocumentReference.set() called with invalid data. Data must be an object, but it was: a custom Q object的错误信息。 - ckeeney

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接