使用AngularFire2和Firebase加入数据时出错

时间:2016-09-10 10:11:04

标签: angular firebase firebase-realtime-database ionic2 angularfire2

我的数据库包含两个表格'使用消息和用户,消息具有与userID匹配的senderID。我在使用以下代码在获取数据时将这两者连接在一起

this.messages = this.af.database.list(`/messages/1`)
    .map(messages => {
      messages.map(message => {
        this.af.database.object('users/' + message.sender)
          .subscribe(user => {
            message.userdata = user;
            console.log(message);
          });
        return message;
      });
      return messages;
    });
消息上的

console.log显示了我所遵循的结构,但是,当我使用{{item.userdata.provider.displayName}}时,它会给我以下TypeError: Cannot read property 'provider' of undefined

感谢您的建议。

1 个答案:

答案 0 :(得分:1)

您不能依赖于正在填充的message.userdata。您正在进行异步调用以从服务器获取数据,但不会在呈现UI之前等待所有用户下载。

此外,您应该考虑用户可能不存在的情况。因此,如果没有首先尝试{{item.userdata.provider.displayName}},您将无法使用item.userdata?

我猜有更好的方法可以解决这个问题,例如创建一个item.getUserName()方法,可以更透明,更优雅地处理这些实现细节。