我想在我的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
数组中具有一个对象数组。