【问题标题】:Firebase not returning objectFirebase 不返回对象
【发布时间】:2020-11-30 08:19:05
【问题描述】:

我正在尝试用 angular 10 中存储在 firebase 中的对象填充表。它在终端中没有显示任何错误,但在编译时显示

错误:找不到“object”类型的不同支持对象“[object Object]”。 NgFor 只支持绑定到 Arrays 等 Iterables。

component.html

<tbody>
    <tr *ngFor="let p of positiveDetails" >
        <td></td>
        <td>{{p.name}}</td>
        <td>{{p.age}}</td>
        <td>{{p.area}}</td>
        <td>
            <a [routerLink]="['positive-details/', p.key]">View</a> 
  // Redirects to another Component where i can View every details (Cannot get ID)
        </td>
    </tr>
</tbody>

component.ts

export class PositiveListComponent {
  positiveDetails: AngularFireList<any>;

  constructor( private db: AngularFireDatabase , private positiveService: PositiveService) {
    this.positiveDetails = this.positiveService.getAll()
   }
}

service.ts

export class PositiveService {

  constructor( private db: AngularFireDatabase ) { }

  create(positiveDetails){
    return this.db.list('/positiveDetails').push(positiveDetails);
  }

  getAll() {
    return this.db.list('/positiveDetails');
  }
}

我不清楚是否必须在某处导入模型

【问题讨论】:

  • 使用 console.log 检查你在this.positiveDetails 中得到了什么
  • 它什么也没返回,这就是为什么我不知道我是否必须导入模型
  • 检查以下事项: 1.您的 Firebase DB / Store 是否有数据。如果有数据,则对您收到的日志进行屏幕截图

标签: angular firebase datatable angularfire


【解决方案1】:

您必须执行以下操作

this.positiveService.getAll().snapshotChanges().pipe(
      map(changes =>
        changes.map((c: any, index: number) => {
          console.log('c is', c);
          return (
            {
              id: index + 1,
              name: c.payload.val().name, //add your objects here
              mobileNo: c.payload.val().mobileno,
            }
          );
        }
        )
      )
    ).subscribe(datas => {
      this.positiveDetails = datas;
    });

或者类似的东西

this.positiveService.getAll().snapshotChanges().pipe(
  map(snapDoc => {
    return snapDoc.map(doc => {
    return {
        id: doc.payload.doc.id,
        ...doc.payload.doc.data()
    };
    });
  });
);

【讨论】:

  • 当我尝试第二个时,它说属性 'map' 在类型'Observable[]>' 上不存在。
  • 你可以检查更新的答案以及第一种方法是否有效?
  • 感谢第一种方法有效,我发布的内容适用于 angular 8 但不适用于 10。
  • 第一种方法在 Angular 10 中有效吗?
  • 完成 Nidhin Kumar ,非常感谢
猜你喜欢
  • 2019-05-21
  • 1970-01-01
  • 1970-01-01
  • 2019-01-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-14
  • 2017-08-25
相关资源
最近更新 更多