【发布时间】:2018-09-04 17:44:44
【问题描述】:
在 switchMap 运算符之后,我使用 flatMap 运算符获取对象可观察数据
return this.db.list(`UserPlaces/${this.authData.auth.auth.currentUser.uid}`, {
query: {
orderByChild: 'deleted',
equalTo: false
}
})
.map((locations: any) => {
console.log(JSON.stringify(locations,null,2)); // this log is called 0
return locations.map(location => {
return location.$key;
});
}).switchMap(ids => {
return ids.map(id => {
console.log(id) // this log is called 1
return this.db.object(`Devices/${id}`)
});
}).flatMap((x: any) => {
console.log(x); // this log is called 2
return x;
}).map((x:any)=>{
console.log(x);
if(!x.deleted){
return x;
}
})
.do(console.log) // and this log is called 3
日志 0:
[
{
"deleted": false,
"guest": false,
"owner": true
},
{
"deleted": false,
"guest": false,
"owner": true
},
{
"deleted": false,
"guest": false,
"owner": true
},
{
"deleted": false,
"guest": false,
"owner": true
},
{
"deleted": false,
"guest": false,
"owner": true
},
{
"deleted": false,
"guest": false,
"owner": true
},
{
"deleted": false,
"guest": false,
"owner": true
}
]
日志 1:
-L8CmrV8BBQCVv_0x_-6
-L8CnDqHz_VWP9dpw-tz
-L8CxQ_bz4EQSPa4STUd
-L8CxSaF1JdHwhn3YyrC
-L8WVlwWj-ghpZsx2PEE
-L8WW5QbxxNMeWonNdSg
-L8XJHI0-ZhPAA9Xy3Sx
日志 2:
FirebaseObjectObservable {_isScalar: false, $ref: U, source: FirebaseObjectObservable, operator: ObserveOnOperator}
FirebaseObjectObservable {_isScalar: false, $ref: U, source: FirebaseObjectObservable, operator: ObserveOnOperator}
FirebaseObjectObservable {_isScalar: false, $ref: U, source: FirebaseObjectObservable, operator: ObserveOnOperator}
FirebaseObjectObservable {_isScalar: false, $ref: U, source: FirebaseObjectObservable, operator: ObserveOnOperator}
FirebaseObjectObservable {_isScalar: false, $ref: U, source: FirebaseObjectObservable, operator: ObserveOnOperator}
FirebaseObjectObservable {_isScalar: false, $ref: U, source: FirebaseObjectObservable, operator: ObserveOnOperator}
FirebaseObjectObservable {_isScalar: false, $ref: U, source: FirebaseObjectObservable, operator: ObserveOnOperator}
日志 3:
{deleted: false, id: "", name: "new place", owner: "cS81XkHhVHNv0nmpVit0Glpuc1t1", tone: "default", …}
{deleted: false, id: "", name: "new one", owner: "cS81XkHhVHNv0nmpVit0Glpuc1t1", tone: "default", …}
{deleted: false, id: "", name: "nice", owner: "cS81XkHhVHNv0nmpVit0Glpuc1t1", tone: "default", …}
{deleted: false, id: "", name: "new one", owner: "cS81XkHhVHNv0nmpVit0Glpuc1t1", rooms: {…}, …}
{deleted: false, id: "", name: "das", owner: "cS81XkHhVHNv0nmpVit0Glpuc1t1", tone: "default", …}
我需要将日志 3 合并为对象数组而不是单独的对象。
我的目标是:
显示一个离子选择,它在阵列中循环并显示地名。
谢谢。
【问题讨论】:
-
如果源代码完成,您可以在链的末尾使用
toArray()。如果没有,您可以使用scan()收集结果 -
@martin 感谢您的回复,但您能否将您的意见作为问题添加,更清楚
-
你想要zip这样的东西吗?
-
@sabithpocker 我是 RXJS 世界的新人,所以我不知道 zip 到底在做什么,所以你可以添加一个答案来测试 zip 运算符吗?同时我会读到它
-
请耐心等待。阅读并在此处回复。
标签: angular typescript firebase ionic2 rxjs