Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.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
使用AngularFire2和Firebase获取联接数据时出错_Angular_Firebase_Firebase Realtime Database_Ionic2_Angularfire2 - Fatal编程技术网

使用AngularFire2和Firebase获取联接数据时出错

使用AngularFire2和Firebase获取联接数据时出错,angular,firebase,firebase-realtime-database,ionic2,angularfire2,Angular,Firebase,Firebase Realtime Database,Ionic2,Angularfire2,我的数据库由两个“表”组成,其中包含消息和用户,消息的senderID与用户ID匹配。在获取数据时,我使用以下代码将这两个连接在一起 this.messages = this.af.database.list(`/messages/1`) .map(messages => { messages.map(message => { this.af.database.object('users/' + message.sender)

我的数据库由两个“表”组成,其中包含消息和用户,消息的senderID与用户ID匹配。在获取数据时,我使用以下代码将这两个连接在一起

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}
时,它给了我以下
类型错误:无法读取未定义的属性“provider”


感谢您的建议。

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

另外,您应该考虑用户可能不存在的情况。因此,如果不首先尝试

item.userdata?
,您将无法使用
{{item.userdata.provider.displayName}}


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

请原谅我的无知,但是
messages.map
是否不返回映射值?您似乎没有返回该消息,而是返回原始消息对象。