NodeJS 键入ORM以查询喷射预防(_T)

wrrgggsh  于 2023-01-01  发布在  Node.js
关注(0)|答案(1)|浏览(128)

我想对2列执行全文搜索,包括部分查询。
我尝试了多种选择,这一种对我来说似乎是最好的:
1.在<->查询词和结尾处的:* 之间添加
1.执行查询
问题是,我必须在TypeORM中执行查询,所以当我使用to_tsquery(:query)时,查询中可能有无效的语法,这会产生错误。
函数plainto_tsquery()将是完美的,因为它防止了参数中的无效语法,但同时也防止了部分查询,我可以按照描述来执行部分查询。
你知道我怎样才能把世界上最好的东西结合起来吗?

mum43rcc

mum43rcc1#

你可以试试

SELECT to_tsquery(quote_literal(query) || ':*')

这将<->在word和每个单词末尾的:* 之间添加,而quote_literal应该通过转义文本来避免语法问题。
然而这种方法的缺点是当遇到带有符号的查询时,生成的查询可能会出现意外的行为,例如,o'reilley as query将生成'o':<->' reilley ': as tsquery,这可能不会给予预期的结果。不幸的是,我知道的唯一解决方案是清除输入和文本数据中的任何符号。

相关问题