我如何绕过firebase在响应中给出的数组中的随机id?

时间:2018-05-11 16:01:09

标签: javascript angular firebase firebase-realtime-database

这是我的console.log但是我只能访问名称而不是消息, 我能够打印名称但当我尝试打印消息时,当我打印数据时,我在页面上得到[对象] [对象],想要删除-LCE-36m4sdrPGFpusM6:

//输出

messages:
 -LCE-36m4sdrPGFpusM6:
 date:"2018/5/11"
 haveConsultant:true
 hour:"12:40"
 message:"hi"
name:"Teste chat 2"

我的代码用来自firebase的angular打印此输出,我该怎么做才能访问消息嵌套数组???

getUsersChat() {

    let clientsKeys: Array < any > ;

    let i = 0;
    console.log('obter chats ativados');
    this.mySegService.getChats().take(1).subscribe(res => {

      clientsKeys = Object.keys(res);
      this.totalNumberClients += clientsKeys.length;
      clientsKeys.forEach(clientKey => {
        if (i < ++i && res[clientKey]['messages'] !== undefined) {
          this.clientsShortList.push({
            name: res[clientKey]['name'],
            messages: res[clientKey]['messages']
          });
        }
        i += 1;
      });

    console.log(this.clientsShortList);
   });

  }

//我的HTML代码

<mat-list>
  <mat-list-item *ngFor="let chat of clientsShortList">
    <mat-icon mat-list-icon>account_circle</mat-icon>
    <h4 mat-line>{{chat.name}}</h4>
    <button mat-button>see more</button>
  </mat-list-item>
</mat-list>

2 个答案:

答案 0 :(得分:1)

此问题的一个可能的简单解决方案是在尝试JSON.stringify之前console.log消息对象。

根据对象的浏览器和格式,只需调用console.log(obj)就不会有诀窍。

在您的情况下,这将是对该行的更改:

messages: res[clientKey]['messages']

改为

messages: JSON.stringify(res[clientKey]['messages'])

答案 1 :(得分:1)

您可以先使用Object.keys获取随机ID,如下所示:

var key = Object.keys(res[clientKey]['messages'])[0];

然后获取这样的消息对象:

console.log(res[clientKey]['messages'][key])