尝试使用reactjs在Firebase中具有唯一的编号ID

时间:2018-09-26 13:56:29

标签: reactjs firebase firebase-realtime-database firebase-console

我似乎无法将计数器值设置为最后插入的查询的ID。好像是空的?

componentDidMount() {
//Last inserted query
let postRef = firebase.database().ref('clients').orderByKey().limitToLast(1); 
//Fetch the data from the query
postRef.on('value', snapshot => {

  this.setState({ counter: snapshot.child('clients').child('ID').val()});

});


}

enter image description here

1 个答案:

答案 0 :(得分:1)

这应该可以解决问题:

let postRef = firebase.database().ref('clients').orderByKey().limitToLast(1); 
postRef.once('child_added', snapshot => {
  this.setState({ counter: snapshot.child('ID').val()});
});

我对您的代码进行的更改:

  • 这现在使用once而不是on,因为我假设您不打算获得连续更新。如果您确实想在添加/删除键时接收更新,请使用on
  • 我监听child_added,因为它会触发正确的子节点。如果您监听value,则需要遍历快照(使用snapshot.forEach()遍历子节点。
  • 我从您的代码中删除了child('clients'),因为每个孩子下都没有clients节点。