gpt4 book ai didi

node.js - Sequelize 中不重音

转载 作者:行者123 更新时间:2023-11-29 12:42:01 28 4
gpt4 key购买 nike

我目前在一个使用 ExpressJS、PostgreSQL 和 Sequelize 作为 ORM 的项目中工作。我开发了一个搜索功能,可以进行按名称搜索项目的查询:

models.foo.findAll({
where: {
$or: [
{name: {$ilike: keywords}},
{searchMatches: {$contains: [keywords]}}
]
},
order: [['name', 'ASC']]
})

这工作正常,但如果名称包含特殊字符(如 á、é、í、ó 或 ú),则此查询将找不到它。

有没有一种方法可以使查询搜索名称具有有意义的特殊字符?就像如果我搜索名称“potato”,结果“The potato”、“Da potátos”和“We are the pótatóes”将会出现,但不会出现“We eat pátatos”(因为 á != o)

最佳答案

这现在可以在没有完全 RAW 查询的情况下完成,而是使用 Sequelize 的内置函数:

models.foo.findAll({
where: Sequelize.where(
Sequelize.fn('unaccent', Sequelize.col('name')), {
[Op.iLike]:`%${keywords}%`
}),
order: [['name', 'ASC']]
})

然后排序、关联等都照常工作:)。

关于node.js - Sequelize 中不重音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45415791/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com