【发布时间】:2018-08-06 22:52:31
【问题描述】:
所以我有一个应用程序,您可以在其中注册和登录。我使用 Firebase Auth 做到了这一点。
然后我有一个 Firestore,其中有多个集合,例如“Requests”和“Offers”。我的应用程序中的 Firebase 授权用户可以创建新请求,我添加如下:
firestore
.collection('requests')
.add({
category: 'Test',
customer_id: this.props.appState.user.uid, // The uid from Firebase Auth
link: this.state.productLink
})
.then(docRef => {
console.log('Successfully saved!');
})
.catch(error => {
console.log(error);
});
如您所见,我想将用户 Firbase Auth uid 存储到请求中,以便稍后在我的应用中查询用户的请求。
问题是:这是正确的方法吗?此时我不想在我的 Firestore 中创建用户集合来为用户保存更多数据。在这种情况下,我可以添加一个以 uid 作为键的文档,然后在“请求”集合中保存对用户的引用。但在目前的情况下,我不能或至少我还没有找到方法,阅读文档并搜索谷歌。
【问题讨论】:
-
请问您为什么不想创建用户集合?您能否澄清“但在当前情况下我不能或至少我还没有找到方法,阅读文档并搜索谷歌”是什么意思。您无法弄清楚如何为用户创建参考?你可以创建 userRef = firebase.firestore().collection("users").doc(uid)
-
在这一点上,用户收集对我来说并没有什么意义,因为我没有任何进一步的数据要为用户存储。他们没有“个人资料”或其他东西。对于引用的那句话,我的意思是我不知道应该如何将“引用”存储到 Firebase-Auth-uid。我问自己我发布的代码在这种情况下是否正确,因为我只将 uid 作为字符串存储到字段“customer_id”中。
-
只要您只需要基于登录用户(即 currentUser)进行查询,这对我来说似乎是个好方法!但是,我会让专家们插嘴。
-
基于 Firebase Auth 文档,我不这么认为。如果要检索有关每个用户的信息,或存储每个用户的任何其他信息,则需要使用数据库。
-
您可以在 admin sdk 的 auth() 方法上搜索用户,但您需要 uid 才能这样做。换句话说,您应该考虑在搜索当前登录用户以外的用户的任何设计中存储用户表。
标签: javascript reactjs firebase google-cloud-firestore