我正在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
答案 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
存在于您的文档中,现在您的查询应该可以正常工作。