【问题标题】:Use unaccent postgres extension in Knex.js Querys在 Knex.js 查询中使用非重音 postgres 扩展
【发布时间】:2020-11-26 20:52:04
【问题描述】:

我需要查询一个不带重音符号(á、í、ö 等)的 postgresdb。

我已经使用 Knex.js 作为查询构建器,并且 postgresql 有一个 unaccent 扩展,可以在直接对 db 的 sql 查询中正常工作,但是在我的代码中我使用 knex 并且 unaccent 函数在查询中抛出错误。

谁能帮助我,¿是否可以使用 knex.js 进行查询,使用 postgresql 的 unaccent 功能?

【问题讨论】:

  • 如果你能说出你想要实现的 SQL 是什么以及你遇到什么样的错误,那将会很有帮助。

标签: sql postgresql knex.js unaccent


【解决方案1】:

我的解决方案是在提交查询之前使用以下代码处理字符串:

const normalize = (str) => str.normalize('NFD').replace(/[\u0300-\u036f]/g, '');
console.log(normalize('Ấ Á Ắ Ạ Ê')) -> 'A A A A A'.

或者,如果您使用 postgresql 版本 13 或更高版本,它已经支持该功能。

select normalize('hồ, phố, ầ', NFC) → 'ho, pho, a' -- NFC (the default), NFD, NFKC, or NFKD.

文档:https://www.postgresql.org/docs/13/functions-string.html

【讨论】:

    猜你喜欢
    • 2017-01-12
    • 2017-07-16
    • 1970-01-01
    • 2016-07-01
    • 2018-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-09
    相关资源
    最近更新 更多