所以我有一个应用程序,您可以注册和登录。我使用Firebase Auth。
然后我有一个Firestore,我有多个集合,如“请求”和“优惠”。我的应用中的Firebase-Authed用户可以创建新的请求,我这样添加:
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作为键添加文档,然后在“请求”集合中保存对用户的引用。但在目前的情况下,我不能或至少我找不到方法,阅读文档和搜索谷歌。
答案 0 :(得分:2)
为此提供一个答案,以避免人们不得不阅读评论会话。
最佳方法是创建一个名为users
的集合,其中文档ID是uid
中用户的Authentication
。最简单的方法是在新注册时执行此操作,您可以在处理新用户注册的位置执行此操作,也可以查看Cloud Functions来查找新的身份验证并按以下方式运行该功能:
exports.sendWelcomeEmail = functions.auth.user().onCreate((user) => {
// ...
});
此处的文档:https://firebase.google.com/docs/functions/auth-events
无论有没有用户集合,只要您始终有一种检索用户信息的方式,就可以像存储样本一样存储UID。创建users
集合可以使为用户存储的数据类型的操作更加灵活(由于充分的理由,标准auth对象的灵活性为零)。