gpt4 book ai didi

node.js - 为什么我在 Sequelize 查询中 OR 运算符内的条件 WHERE 被转换为 AND?

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

我正在尝试使用带有条件 WHERE 的 Sequelize 进行查询,如此处所述 (How to perform a search with conditional where parameters using Sequelize)。

我的代码相关部分是这样的

    const Op = Sequelize.Op;
var search = {};
if (typeof req.query.search !== 'undefined'){
search.nome = {[Op.like]: '%' + req.query.search + '%'};
search.username = {[Op.like]: '%' + req.query.search + '%'};
}
model.User.findAll({
where:{
[Op.or]: [
search
]
})

它可以工作,但是生成的 SQL 添加了一个 AND 而不是 OR,如下所示:

    SELECT 'id_', 'nome', 'username', 'id' FROM 'User' AS 'User' WHERE (('User'.'nome' LIKE '%test%' AND 'User'.'username' LIKE '%test%'))

我是不是做错了什么我没看到?我已经尝试了几种组合,但都没有用。

最佳答案

构造的 search 过滤器有问题。 [Op.or] 应该是搜索的传播而不是数组。

尝试如下,

model.User.findAll({
where: {
[Op.or]: {
email: {
[Op.like]: 'abcd',
},
username: {
[Op.like]: 'cdf',
},
}
},
logging: console.log,
});

你会得到以下内容,

    SELECT "id", "name", "username" FROM "users" AS "User" WHERE "User"."deleted_at" IS NULL AND ("User"."email" LIKE 'abcd' OR "User"."username" LIKE 'cdf');

关于node.js - 为什么我在 Sequelize 查询中 OR 运算符内的条件 WHERE 被转换为 AND?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55564036/

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