我如何通过字段名称查询firestore并使用angular在ionic 4列表中生成数据

时间:2019-08-08 06:50:53

标签: angular ionic-framework google-cloud-firestore observable ionic4

我正在IONIC 4中使用angular来从Firestore中获取数据,现在我正在通过定位{中的一个名为assignments的字段来获取分配给登录agent的{​​{1}}的列表{1}}收集文档。

我使用firestore查询来获取数据,但仍然没有数据,我得到的是0号。

//我的assignments.service.ts

agent_id

//这是在我的assignments.page.ts中

assignments

//这是我的html页面

getByColumn(table: string, columnname: string, value: string) {
  return this.afs.collection<any>(table, ref =>
    ref.where(columnname, '==', value))
    .snapshotChanges().pipe(
      map(actions => {
        return actions.map(a => {
          const data = a.payload.doc.data();
          const id = a.payload.doc.id;
          return { id, ...data };
        });
      })
    );
  }

以下显示了我的数据在firebase中的结构 如您所见,我每个人都有Assignmnets和agent集合,我有自己的ID可以互相查询,因为1个agent可以分配一个或多个分配给他。 enter image description here enter image description here

1 个答案:

答案 0 :(得分:0)

首先,问题是您试图查询assignments表,尽管该表以大写Assignments命名为A。第二个问题似乎是类型不匹配。在数据库的图像中,您将agent_id设置为类型number,而您正在尝试使用string查询表。这很重要。我假设您在localStorage中始终有一个ID,该ID可以是数字,如果这样,只需在ID前面添加一个+,即可将字符串转换为数字:

assignServises.getByColumn('Assignments', 'agent_id', +id)

,当然将相应的函数参数类型更改为number

getByColumn(table: string, columnname: string, value: number) {

鉴于agent_id存在于您的文档中,现在您的查询应该可以正常工作。