Angular Firebase列表中对象的长度

Angular Firebase列表中对象的长度,angular,firebase,firebase-realtime-database,angularfire2,Angular,Firebase,Firebase Realtime Database,Angularfire2,我有下一个Firebase数据库结构: posts | post | comments | comment 1 | comment 2 这是一个帖子的集合,每个帖子都有一个评论的集合。我想在帖子中输出评论数: <ng-container *ngIf="post$ | async; let post"> {{ post.comments?.length }} </ng-

我有下一个Firebase数据库结构:

posts
    | 
    post
       |
       comments
              | comment 1
              | comment 2
这是一个帖子的集合,每个帖子都有一个评论的集合。我想在帖子中输出评论数:

<ng-container *ngIf="post$ | async; let post">
    {{ post.comments?.length }}
</ng-container>

{{post.comments?.length}

但这是行不通的。我做错了什么?

你确定你写的是Firebase保存数据的方式吗? 它们不能将列表保存为数组,但通常会将其转换为索引键为的映射

因此,您的
post.comments
可能不是一个数组,而是一个映射。尝试使用大小而不是长度。
如果它不是地图而是对象(我对此不确定),则应使用
object.keys(post.comments).size

您确定您编写的是Firebase保存数据的方式吗? 它们不能将列表保存为数组,但通常会将其转换为索引键为的映射

因此,您的
post.comments
可能不是一个数组,而是一个映射。尝试使用大小而不是长度。
如果它不是一个映射而是一个对象(我不确定这一点),你应该使用
object.keys(post.comments).size

如果你只插入{{post.comments}}和{post}},你能看到什么?@ForestG我可以得到post的任何字段,甚至是注释,但是
长度
不起作用。如果你只插入{post.comments},你能看到什么和{{post}}@ForestG我可以得到任何post字段,甚至是评论,但是
.length
不起作用。这是它在数据库中的外观:
{(post.comments)?.size}}
也不起作用,那么我假设当您检索
post
对象时,它将是一个
对象,并且
post.comments
也将是。然后
Object.keys(post.comments).keys()
应该为您提供一个键的
数组
(要清楚,
-LaGk…
),它作为一个
数组
有一个属性长度这是它在数据库中的外观:
{(post.comments)?.size}}
也不起作用,那么我假设当您检索
post
对象时,它将是一个
对象,并且
post.comments
也将是。然后
Object.keys(post.comments).keys()
应该为您提供一个
数组
(要清楚,
-LaGk…
),作为一个
数组
有一个属性长度