我无法从firebase检索用户名

时间:2017-03-06 04:27:19

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

我目前正在尝试以反复原生方式从firebase数据库返回用户名。 console.log在函数内部工作,但不记录函数之外的任何内容。我不知道我哪里出错了。这是我的代码。

  componentWillMount() {
    firebase.database().ref('/users/' + this.userId + '/username').once('value').then(function(snapshot) {
    this.username = snapshot.val();
    console.log(this.username)
    });
    console.log(this.username)
    this.setState({
      username: this.username
    })
  }  

2 个答案:

答案 0 :(得分:0)

这是因为JavaScript的异步性质。你应该在回调中做setState

firebase.database().ref('/users/' + this.userId + '/username').once('value').then(snapshot => {
    this.username = snapshot.val();
    console.log(this.username);
    this.setState({
      username: this.username
    })
});

答案 1 :(得分:0)

出于某种原因,将语法更改为es6的箭头函数使代码工作,并在函数中添加this.setState

componentWillMount() {
    firebase.database().ref('/users/' + this.userId + '/username').once('value').then((snapshot) => {
    this.username = snapshot.val();
    console.log(this.username)
    this.setState({
      username: this.username
    })
  })
  }