当过滤器为空时,它返回空数组

Posted

技术标签:

【中文标题】当过滤器为空时,它返回空数组【英文标题】:When filter is empty it returns empty array 【发布时间】:2021-07-13 12:13:44 【问题描述】:

我需要角度项目中数据表中的过滤器方面的帮助。过滤器工作正常,正在过滤表中的结果,但是我删除了过滤器字段中的所有字母,它返回一个空数据表,如果我只输入 1 个字母,它会用结果填充表。

这是我的html

<mat-form-field>
    <mat-label>Search</mat-label>
    <input
      matInput
      (keyup)="applyFilter($event)"
      placeholder="Search"
      #input
    />
  </mat-form-field>

我的打字稿文件:

applyFilter(event: Event) 
    let filterValue = (event.target as HTMLInputElement).value;
    this.filterValue = filterValue;
    console.log(filterValue);
    this.dataSource.searchResults(this.filterValue);
  

还有我的数据源:

searchResults(name: string) 
    this.appService.searchPatient(name).subscribe((data: any) => 
      if (data) 
        this.totalPatientsCountSubject.next(data);
        this.patientsSubject.next(data);
        console.log(data);
      
    );
  

我的服务.ts:

 public searchPatient(name: string) 
    return this._httpClient
      .get(`http://api.dentist.techup.me/patient/search/by/name?name=$name`)
      .pipe(
        map((data: any) => 
          return data.result;
        ),
        catchError(this._handleError)
      );
  

任何帮助将不胜感激! 提前致谢!

【问题讨论】:

请提供方法AppService.searchPatient() 编辑了主胎面。但这里只是以防万一:` public searchPatient(name: string) return this._httpClient .get(http://api.dentist.techup.me/patient/search/by/name?name=$name) .pipe( map((data: any) => return data.result; ), catchError (this._handleError) ); ` 你尝试加载http://api.dentist.techup.me/patient/search/by/name?name=会发生什么?我猜在使用您的 API 时会出现一些错误,因为它试图搜索一个没有返回值的空名称。 【参考方案1】:

好的,看看服务方法的名称 /search/by/name 我几乎 100% 确定这不是 “reduce”意义上的过滤器匹配条目的列表”,但它是一种搜索方法,例如 “把你能找到匹配的所有条目交给我……”

总结一下:当你什么都不输入时得到一个空列表似乎是完全可以的。此方法仅返回输入字符串的匹配项。当没有要搜索的字符串时,它不会返回任何内容。

也许您可以访问有关 API 的一些文档。必须有另一种方法来收集所有条目的完整、未经过滤的列表。

【讨论】:

是的,还有另一个端点可以获取所有条目。这是 /patient/list 的 POST 方法,这是其中的 screenshot。 当然我应该使用另一个端点,但我仍然无法过滤数据 好的,只是为了确定。当您更改 API 调用并获取要在本地过滤的患者的完整列表时,对吗?

以上是关于当过滤器为空时,它返回空数组的主要内容,如果未能解决你的问题,请参考以下文章

当过滤字符串为空时,如何停止 Graphql + Django-Filters 返回所有对象?

在聚合管道中过滤数组为空时保留主文档

仅当搜索栏文本不为空时,如何运行过滤器功能?

仅当变量不为空时,如何应用 Hasura `where` 过滤器?

如果为空,则过滤子文档数组,同时仍返回父数据

当多个输入可以为空时,在 Django 中使用 Q 进行过滤