Преобразование архитектуры значения моментального снимка Firebase - PullRequest
0 голосов
/ 13 апреля 2019

Я пытаюсь импортировать данные из Firebase сразу после запуска моего приложения React.

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: {...}}

Я хочу получить такие данные:

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

Как мне этого добиться?Заранее спасибо.

1 Ответ

2 голосов
/ 13 апреля 2019

Поскольку для работы с массивами обычно используется Firebase ... Попробуйте что-то вроде этого:

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

Теперь у вас будет массив объектов в массиве messages ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...