【发布时间】:2019-04-13 03:47:51
【问题描述】:
我有一个 Cloud Firestore 文档,它应该是一个对象数组。看起来是这样的
docname: {
0: {...}
1: {...}
2: {...}
这是意料之中的,因为我是这样填充该文档的
myDocRef.set( {...user.myArray});
我遇到的问题是当我从文档中检索数据时。 我目前是这样做的
getUserItems(uid) {
return this._db.doc<MyObj>(`users/${uid}/mysubcollection/items`).valueChanges();
}
这会返回一个对象的对象,我需要它是一个对象数组,以便我可以在其上使用forEach()。
我尝试使用 map() 运算符,但它给了我一些我不理解的结果。
所以,我的目标是将对象对象转换为对象数组,我尝试了这个
items$.pipe(
tap(item => console.log('before map', item )),
map(item => [item]),
tap(item => console.log('after map', item ))
)
.subscribe(...);
这确实有效,因为它将对象的对象转换为对象数组,但当然它将所有对象放入两个暗淡数组的第一个暗淡中,看起来像这样
Array [Object(9)]
我可以在这里做什么来将对象的对象转换为对象数组,以便我的最终结果是这样的
Array(9) [ {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…} ]
从这里开始
Object(9) [ {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…} ]
到这里
Array(9) [ {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…} ]
【问题讨论】:
-
为什么不先创建一个空数组,然后将数组中的每一项推送到“管道”方法中呢?
标签: javascript arrays angular object rxjs