【发布时间】:2018-04-24 06:04:37
【问题描述】:
我有一个网络应用程序向 firebase 实时数据库发出请求以获取用户信息。
服务调用以下方法时返回信息:
//searches db for user information
getUserInfo(uid){
return this.db.list('users/', ref => ref.orderByKey().equalTo(uid)).valueChanges();
}
此方法在这样定义的管道内触发:
@Pipe({
name: 'usernamePipe'
})
export class UsernameFilter implements PipeTransform{
constructor(private auth: AuthenticationService){
}
transform(uid: any):any {
//return item if neither filter nor list exists
if(!uid){
return uid;
}
var user = {};
this.auth.getUserInfo(uid)
.subscribe(res => {
user = res;
return user[0].userInfo.firstName;
})
}
}
管道用于通过调用我的组件内的实时数据库获得的消息列表,如下所示:
<div class="message-summary" *ngFor="let msg of messageThread.messages | keys; let last = last" (click)="getThreadDetails(messageThread.messages)">
<span class="time">{{msg.timeSent | date: 'short'}}</span>
<span class="sender-name" *ngIf="msg.from !== 'admin'">{{msg.from | usernamePipe | async}}</span>
</div>
keys 管道是另一个自定义管道,我用来将从初始请求返回到实时数据库的对象转换为数组,以便使用 *ngFor 进行迭代
问题是转换后的数据没有显示在 DOM 中,但如果我尝试将其记录到控制台,它会显示 - 证明该方法有效,但由于某种原因它没有显示。
【问题讨论】:
-
代码中的一个问题...stackoverflow.com/questions/39295854/…
-
抱歉你说的问题是什么?
-
据我所知,您正试图从
subscribe返回数据。 -
是的,你是对的,但尝试从
.map返回也不起作用。我尝试将.subscribe换成.map并保持其他所有内容不变,但DOM 也没有改变
标签: angular firebase firebase-realtime-database ngfor