如何将firebase对象的属性列为数组?

Igg*_*ggy 3 firebase reactjs

我有一个firebase数据库,具有以下结构:

我的数据库结构列表

这些随机UID中的每一个都有creatorroomName.我试图在数组中显示所有roomName ["Holy Robert Louis Stevenson", "Holy Sardine", "Holy Gunpowder"],但它总是显示为[Object, Object, Object]

这是我的代码:

const dbRef = firebase.initializeApp(config).database().ref().child('rooms');
...
  componentDidMount(){
    dbRef.on('value', snap => {
      console.log(snap.val());
      console.log('firebaseHolyArray: ', Object.values(snap.val()));
    });
  }
Run Code Online (Sandbox Code Playgroud)

我试过console.log('firebaseHolyArray: ', Object.values(snap.val())["roomName"]);但它显示未定义.如何显示roomName数组格式的值?

Kat*_*ato 8

您可以使用forEach()方法,该方法将从Firebase数据生成正确排序的列表:

dbRef.on('value', snap =>  {
   var data = [];
   snap.forEach(ss => {
      data.push(ss.child('name').val());
   });
   console.log(data);
});
Run Code Online (Sandbox Code Playgroud)

不需要使用Object.values()或使用下划线进行多次迭代,这两种情况都可能会产生无序数据和其他复杂问题.

此外,理想情况下,您应养成使用推荐的实践来处理列表的习惯,例如child_added.