gpt4 book ai didi

javascript - 使用 SEQUELIZE 在 iLike 中使用 CAST 或 CONVERT 进行选择

转载 作者:行者123 更新时间:2023-12-03 22:16:48 25 4
gpt4 key购买 nike

我需要使用 Sequelize 进行全文搜索,但是当我必须将 iLike 与 INTEGER 或 DATE 列一起使用时,我无法在 where 子句中发送字符串,我该如何摆脱列?

使用 Postgresql 查询的示例我想做什么:

SELECT  "Proposta".id,  "Proposta".id_segurado, "Proposta".data_implantacao, "Proposta".data_assinatura, "Proposta".status, "Proposta".numero_proposta,
"Segurado".documento, "Segurado".nome,
p1.id, p1.nome, p1.codigo, p1.documento, p2.id,
p2.nome, p2.codigo, p2.documento
FROM "Proposta"
LEFT JOIN "Segurado" ON "Proposta".id_segurado = "Segurado".id
LEFT JOIN "Produtor" p1 ON p1.id = "Proposta".id_produtor1
LEFT JOIN "Produtor" p2 ON p2.id = "Proposta".id_produtor2
WHERE ((p1.codigo = '8002866' OR p2.codigo = '8002866')
AND ("Proposta".status ILIKE '%108297494%' OR "Proposta".numero_proposta ILIKE '%108297494%'
OR CAST("Proposta".data_implantacao AS VARCHAR) ILIKE '%108297494%'
OR CAST("Proposta".data_assinatura AS VARCHAR) ILIKE '%108297494%'))

这就是我试图用 Sequelize 做的事情:
const propostas = await Proposta.findAll({
where: {
[Op.or]: [
{ "$produtor1.codigo$": documento_produtor },
{ "$produtor2.codigo$": documento_produtor },
],
[Op.or]: [
{
status: {
[Op.iLike]: `%${search}%`,
},
},
{
numero_proposta: {
[Op.iLike]: `%${search}%`,
},
},
db.Sequelize.where(
db.Sequelize.cast(
db.Sequelize.col("$produtor1.codigo$", "VARCHAR"),
{ [Op.iLike]: `%${search}%` }
)
),
db.Sequelize.where(
db.Sequelize.cast(
db.Sequelize.col("$produtor2.codigo$", "VARCHAR"),
{ [Op.iLike]: `%${search}%` }
)
),
],
},
include: [
{
model: Segurado,
as: "segurado",
},
{
model: Produtor,
as: "produtor1",
},
{
model: Produtor,
as: "produtor2",
},
]
})

最佳答案

一些注意事项:

1- Cast 函数不适用于 Node 引用,因此 $produtor1.codigo$ 不起作用,您必须使用 postgres 引用,在这种情况下将是 produtor1.codigo

2- 您必须通过在 models/index.js 中定义的 sequelize 调用该函数

所以:

像这样调用 Sequelize :

const {sequelize} = require("{path}/models/index.js")

并像这样调用 cast 函数:
sequelize.where(
sequelize.cast(sequelize.col("produtor1.codigo"),"varchar"),
{ [Op.iLike]: `%${search}%` }
)

关于javascript - 使用 SEQUELIZE 在 iLike 中使用 CAST 或 CONVERT 进行选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62009286/

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