我想在我的React应用程序启动后立即从Firebase导入数据。

firebase.database().ref('rooms/room0/messages').on('value', (snapshot) => {
      let roomMessages = snapshot.val()
      if  (roomMessages !== null) {this.setState({messages: [roomMessages]})}
      console.log(roomMessages)




问题是我无法使Firebase以简单的对象数组形式返回消息。在我运行上面的代码后,它将这个对象插入我的状态:

{message0: {...}, message1: {...}}


我想接收这样的数据:

{{...}, {...}}


我该如何实现?先感谢您。

最佳答案

由于使用数组很常见,因此Firebase允许这样做...尝试如下操作:

firebase.database()
  .ref('rooms/room0/messages')
  .once('value')
  .then(snapshot => {
    const messages = [];
    snapshot.forEach(childSnapshot => {
      messages.push({
        id: childSnapshot.key,
        ...childSnapshot.val()
      })
    })
  })


现在,您将在messages数组中具有一个对象数组。

09-25 18:27