Angular 6 функциональность поиска - PullRequest
0 голосов
/ 04 сентября 2018

Я пытаюсь создать функцию поиска, которая возвращает массив наблюдаемых объектов для совпадений с поисковым термином в Angular 6 по нескольким свойствам объекта. В настоящее время мой объект имеет 3 свойства, и с помощью http-клиента я могу искать только одно свойство. Object.name или object.id. Я получил это далеко, изменяя учебник по туру героев на угловом веб-сайте. Чтобы связать мою цель с учебником по героям, я хочу найти героя по идентификатору, имени и, в конечном итоге, по другим свойствам. В настоящее время у меня есть 3 строковых массива, каждый с именем объекта, идентификатором и другим свойством. Я также сделал функцию, которая создает массив объектов путем объединения строковых массивов. Я не знаю, является ли это даже лучшим способом выполнения этой задачи, я изначально работаю с таблицей 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}`)

и я могу получить результаты по идентификатору, но объект рисования со временем будет иметь много других свойств.

Я хочу, чтобы он функционировал так, что если я буду искать по любому свойству, он выполнит поиск по каждому свойству краски и выдаст объединенные результаты.

Я изучал forkjoin, но пока что ничего не заработало.

1 Ответ

0 голосов
/ 04 сентября 2018

В прошлом я обычно обращался с этим с помощью запроса ИЛИ в базе данных. Не уверен, если это не вариант по какой-то причине?

Я бы сделал запрос: 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 } ] }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...