Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Firebase:如何取回数组而不是对象_Javascript_Firebase_Firebase Realtime Database - Fatal编程技术网

Javascript Firebase:如何取回数组而不是对象

Javascript Firebase:如何取回数组而不是对象,javascript,firebase,firebase-realtime-database,Javascript,Firebase,Firebase Realtime Database,我正在打电话获取我在firebase中设置的书籍列表 firebase.database().ref('/users/' + uid + '/books').on('value', (data) => { this.books = data.val(); }) 数据作为一个对象返回,其中包含book对象。我需要它们以数组形式出现,因为我的表采用数组来显示数据。有没有一种方法可以在不转换数据的情况下以数组形式将其取回?我预计这个列表会越来越长,因此转换数据最终似乎会成为一个性能问题

我正在打电话获取我在firebase中设置的
书籍列表

firebase.database().ref('/users/' + uid + '/books').on('value', (data) => {
   this.books = data.val();
})
数据作为一个对象返回,其中包含book对象。我需要它们以数组形式出现,因为我的表采用数组来显示数据。有没有一种方法可以在不转换数据的情况下以数组形式将其取回?我预计这个列表会越来越长,因此转换数据最终似乎会成为一个性能问题


浏览对象键并使用map转换为对象数组

var obj={a:{b:2},c:{b:2};
var arr_obj=Object.keys(obj.map)(key=>({[key]:obj[key]}));

console.log(arr_obj)
能否详细说明您作为“data.val()”接收的json格式?那么所需的格式是什么?@SivaKondapiVenkata当然,它返回为
{-LxAOIiTml3AE9c\u 4wxg:{…},-LxAOL\u n\u KSmNa\u 1JdPQ:{…}
。我希望它作为一个对象数组返回,而不是一个包含对象的对象,比如:
[{-LxAOIiTml3AE9c\u 4wxg:{…},-LxAOL\u n\u KSmNa\u 1JdPQ:{…}]
得到了@morganOril,我刚刚添加了答案。谢谢,但我关心的是这个问题,不能用大数据集进行扩展。每次打电话时我都要把数据映射出来,然后OHH ok@morganOril收到了!。只是通过。它说“Firebase对数组没有本机支持”,如果是这样的话,一些(后端或前端)必须从Obj->Array转换。。。与你打开一个订阅,将得到你的“一个”电话。如果您选择使用
一次
它将返回一个承诺,这样您就可以在那里格式化数据并等待完成的数据设置,这真是太遗憾了!谢谢@siva找到这个@SivaKondapiVenkata Firebase无疑在实时数据库和Firestore中都支持阵列。但是,它们被视为一个对象,因此当您调用.val()或使用REST api读取数据时,如果数据看起来像数组,Firebase会将其呈现为数组。但关键是,数组通常不适合与NoSQL数据库一起使用,而且通常有更好的选择。把这篇文章通读一遍可能是个好主意,因为它不支持数组是断章取义的