Angular 6搜索功能

问题描述 投票:0回答:1

我试图使一个搜索函数返回一个可观察对象数组,用于Angular 6中搜索项的匹配,对象的多个属性。我的对象目前有3个属性,使用http客户端,我只能搜索一个属性。 Object.name或object.id。我在角网站上修改了英雄巡回教程。为了将我的目标与英雄教程联系起来,我想通过id,name以及最终通过其他属性搜索英雄。我目前有3个字符串数组,每个数组都有对象名,id和另一个属性。我还创建了一个函数,通过连接字符串数组创建一个对象数组。我不知道这是否是执行此任务的最佳方式,我最初使用excel表并尝试使用其数据构建模拟数据库。我被告知要将数据转换为json文件,并将其保存在我的资产文件夹中。

searchPaints(term: string): Observable<Paint[]> {
    if (!term.trim()) {
      // if not search term, return empty paint array.
      return of([]);
    }
   return this.http.get<Paint[]>(`${this.paintsUrl}/?name=${term}`)

   .pipe(
      tap(_ => this.log(`found paints matching "${term}"`)),
      catchError(this.handleError<Paint[]>('searchPaints', []))
    );
  }

这是代码的一个例子,我可以修改get请求

this.http.get<Paint[]>(`${this.paintsUrl}/?id=${term}`)

并且我能够通过ID获得结果,但是paint对象最终会有许多其他属性。

我想要它的功能,如果我搜索任何属性,它将在paint的每个属性中进行搜索,并返回组合结果。

我一直在探索forkjoin,但到目前为止我还没有得到任何功能。

angular rxjs observable angular-httpclient
1个回答
0
投票

我过去通常处理这些东西的方式是在数据库中使用OR查询。不确定这是不是出于某种原因的选择?

我会查询:this.http.get(${this.paintsUrl}/?query=${term}

不确定您使用的数据库。 SQL

SELECT * FROM Paint WHERE Id LIKE '%@query%' OR Color LIKE '%@query%'

蒙戈

{ $or: [ { "Id": /.*query.*/i }, { "Color": /.*query.*/i } ] }
© www.soinside.com 2019 - 2024. All rights reserved.