angular - Angular 6 搜索功能
问题描述
我正在尝试创建一个搜索函数来返回一个可观察的对象数组,以匹配 Angular 6 中的搜索词,针对对象的多个属性。我的对象目前有 3 个属性,使用 http 客户端,我只能搜索一个属性。Object.name 或 object.id。我在 Angular 网站上修改了英雄之旅教程。为了将我的目标与英雄教程联系起来,我想通过 id、name 并最终通过其他属性来搜索英雄。我目前有 3 个字符串数组,每个数组都有对象名称、id 和另一个属性。我还创建了一个函数,通过加入字符串数组来创建对象数组。我不知道这是否是完成这项任务的最佳方式,我最初正在使用 excel 工作表并尝试使用其数据构建一个模拟数据库。
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', []))
);
}
这是代码示例,我可以将获取请求修改为
this.http.get<Paint[]>(`${this.paintsUrl}/?id=${term}`)
而且我可以通过 ID 获得结果,但是绘画对象最终将具有许多其他属性。
我希望它的功能是,如果我按任何属性进行搜索,它将在paint的每个属性中进行搜索,并返回组合结果。
我一直在探索 forkjoin,但到目前为止我还没有得到任何功能。
解决方案
我过去通常处理这些东西的方式是在数据库中使用 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 } ] }
推荐阅读
- excel - 从 SSAS OLAP Cube (MDX) 获取数据时如何在 Excel SubTotal 中获取第一行?
- javascript - onBlur 和 onChange 相互影响
- azure-ad-b2c - Azure AD B2C - 将 PasswordReset 策略直接配置到注册/登录的自定义策略中
- azure - 使用 nextauth 登录 azure AD
- android - 在应用程序中购买在 Playstore 上列出的价格与在 Play 控制台中列出的价格不同
- typescript - 带有 Firebase Firestore 的 GraphQL 数据加载器
- c++ - 未定义对“amBXCreateInterface”的引用
- r - 在 rmarkdown::beamer_presentation 中使用幻灯片注释时,框架的内容会消失
- github - 有些标签在 git log 中不可见,但在 git tag 中可见
- azure - 在推送 VS 表格项目 (*.bim) 后,我们可以决定运行哪个发布管道吗?