是否存在一种方法可以在不使用TypeORM中的QueryBuilder的情况下在where条件中搜索值时取消数据库中值的重音?
我没有尝试任何东西,因为没有文档或 FindOperator 存在来取消数据库值的重音
在 TypeORM 中,在不使用 QueryBuilder 的情况下使用 where 条件进行搜索时,没有内置支持在数据库中取消重音值。但是,根据您使用的数据库系统,您可能可以利用一些特定于数据库的功能或技术。
例如,如果您使用 PostgreSQL 作为数据库,则可以利用 PostgreSQL 提供的 unaccent 扩展来删除值中的重音符号,然后再在 where 条件中进行比较。要使用此方法,您需要在数据库中启用非重音扩展,然后在查询中使用它。
以下是如何在 PostgreSQL 中实现此目的的示例:
在 PostgreSQL 数据库中启用 unaccent 扩展。您可以通过执行以下 SQL 命令来完成此操作:
CREATE EXTENSION IF NOT EXISTS unaccent;
在查询数据库时,可以使用 PostgreSQL 提供的 unaccent 函数来去除要搜索的值中的重音符号。这是一个例子:
import { getRepository } from 'typeorm';
const userRepository = getRepository(User);
const searchTerm = 'Café'; // The search term with accents
const users = await userRepository
.createQueryBuilder('user')
.where('unaccent(user.name) ILIKE unaccent(:term)', { term: `%${searchTerm}%` })
.getMany();