我正在使用此个人资料屏幕来显示用户信息。 用户验证后,我将数据存储在Cloud Firestore中,文档ID等于用户ID。 现在,我想从Cloud Firestore检索数据,其当前userId等于文档ID。
现在我有这个:
class UserManagement {
getData() async{
String userId = (await FirebaseAuth.instance.currentUser()).uid;
print(userId);
return Firestore.instance.collection('users').document(userId);
}
但是当我注销并与其他用户重新登录后,它不能显示正确的数据。
UserManagement().getData().then((results) {
setState(() {
userFlag = true;
users = results;
});
});
现在,如何获取其他字段,例如姓名,电子邮件,课程,电话号码等。 并将所有值都存储到user.right吗?
答案 0 :(得分:5)
如果您的Firestore中的文档ID等于Firebase身份验证控制台中的import React, { useState } from 'react';
import {
StyleSheet,
Text,
View,
TextInput,
Button,
} from 'react-native';
export default function AddList({ submitHandler }) {
const [text, setText] = useState('');
const changeHandler = (val) => {
setText(val);
}
return(
<View style={styles.container}>
<View style={styles.wrapper}>
<TextInput
style={styles.input}
placeholder='text'
onChangeText={changeHandler}
/>
<Button onPress={() => submitHandler(text)} title='ADD' color='#333' />
</View>
</View>
);
}
,那么您需要先检索userid
并将其作为参数传递给方法{{1} }:
uid
答案 1 :(得分:1)
您的查询正在获取“ userData”集合中的所有文档,然后从整个集合中挑选出第一个文档。对于具有对该集合的读取访问权限的所有用户,这将是同一套文档。我不明白为什么您期望不同的用户获得不同的结果。也许您打算为给定用户ID的用户访问单个文档,而不是所有文档。在这种情况下,您应该以{{1}} uid`作为当前登录用户的ID来请求该文档。
此外,您的代码正在查询一个名为“ userData”的集合,但是您的屏幕截图显示了一个名为“ users”的集合,这很令人困惑。