【问题标题】:How to get user id from firebase in react native?如何在本机反应中从firebase获取用户ID?
【发布时间】:2019-04-12 22:10:02
【问题描述】:

我需要您的帮助我正在为我的应用程序使用 firebase。我正在尝试获取用户 ID,而不是登录用户,而不是我拥有的所有用户。我想像在每个用户的警报中一样显示他们的(uid)。另外,我在平面列表中显示它们,当我在警报中设置item.uid 时,它显示(undefined)。但是,用户的所有其他数据都正确显示。这是我到现在为止所做的:

** users.js **

export default class usersList extends React.Component{

  state = {
    loading: false,
    uid: '',
    users: [],
    items: []
   };

   componentDidMount() {
        let itemsRef = f.database().ref('users').once('value').then(snapshot => {
               var data = snapshot.val();
               var items = Object.values(data);
               this.setState({items});
               console.log(snapshot.val())

            });
       }


  renderItem({item}) {
    return (
       <View key={index} style={{width: '100%', overflow:'hidden', marginBottom: 5, justifyContent:'space-between', borderBottomWidth:1, borderColor: 'grey'}}>
          <View>
          <View style={{padding:5, width:'100%', flexDirection: 'row', justifyContent: 'space-between'}}>

              <Text>{item.email}</Text>

          </View>
          </View>
        </View>
      )
  }

  render() {
   return (

     <View style={styles.container}>
     <ScrollView>
                {
                    this.state.items.length > 0
                    ? <ItemComponent items={this.state.items} navigation={this.props.navigation} />
                    : <Text>No stores</Text>
                }
                </ScrollView>
            </View>

  );
 }
 }

//ItemComponent.js

export default class ItemComponent extends Component {

  static propTypes = {
      items: PropTypes.array.isRequired
  };

  render() {
    return (
      <View style={styles.itemsList}>
        {this.props.items.map((item, index) => {
            return (
                <View key={index}>
                <TouchableOpacity
                onPress={ () => alert(item.uid)}>
                    <Text style={styles.itemtext}>{item.email}</Text>
                    </TouchableOpacity>
                </View>
            )
        })}
      </View>
    );
  }
}

【问题讨论】:

  • 当我运行 console.snapshot.val() 时没有。我得到了这个输出>> [未处理的承诺拒绝:TypeError:未定义不是对象(评估'console.snapshot.val')] * app/Components/FamiliesList.js:31:32 in - node_modules/promise/ setimmediate/core.js:37:14 in tryCallOne - node_modules/promise/setimediate/core.js:123:25 in - ... 来自框架内部的另外 8 个堆栈帧
  • 如果你没有得到正确的数据记录,这意味着你正在做一个错误的数据库调用console.log(snapshot.val()) -- 运行这个
  • 当我运行 console.log(snapshot.val()) 时,我得到了正确的数据,但是当我运行 console.snapshot.val() 时我没有,谢谢我不知道,因为我'm biggener,那么,你建议我做什么?因为一切都依赖于此,我被困住了,请问有什么可以帮助的吗?
  • 在方法componentWillMount() 中运行console.log(snapshot.val()) 时是否获得所有ID?
  • 是的,这是日志输出的示例 "tnUdqJkl0pcCuQLWGHBANV4l8XV2": Object { "age": "33", "avatar": "gravatar.com/avatar", "email": "store4@store .com”、“fName”:“Store”、“lName”:“Store”、“phoneNum”:“1564237948”、“storeName”:“Store4”、}、“utZ60dru99ObFqrD042ZMBIlGN93”:对象{“头像”:“@ 987654322@", "email": "R@r.com", "name": "输入姓名", "username": "@name", },

标签: javascript firebase react-native firebase-realtime-database expo


【解决方案1】:
firebase.database().ref('user').on('value', (datasnapshot) => {
    this.setState({
       _id: datasnapshot.key
     });`

【讨论】:

    【解决方案2】:

    这个解决方案对我有用

    <Text style={styles.yourStyleHere}>UID: {auth.currentUser?.uid} </Text>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-12-08
      • 2018-04-25
      • 1970-01-01
      • 1970-01-01
      • 2018-07-20
      • 2018-09-24
      • 2020-02-28
      • 2018-05-28
      相关资源
      最近更新 更多