gpt4 book ai didi

sequelize.js - Sequelize - 包含模块,而 where 子句是可选的

转载 作者:行者123 更新时间:2023-12-03 22:33:21 26 4
gpt4 key购买 nike

Man Sequelize 的支持很糟糕。
我正在尝试获取所有行并包含另一个带有 where 的表子句是可选的。
给定下表(我知道它有错误,仅用于演示目的)。

var Event= sequelize.define('Event', {
name: string,
image: string
})

var Occurrence= sequelize.define('Occurrence', {
date: date,
eventId: number
})

//Association
Event.hasMany(Occurrence);
Occurrence.belongsTo(Event);

我想在 occurrence.date > now 时获取所有事件,包括它们的发生。或事件根本没有发生。
到目前为止,我已经尝试了几件事:
const query = {
where: {},
include: {
model: Occurrence,
where: {
date: {
[Op.or]: {
[Op.eq]: null,
[Op.gte]: Date.now(),
}
},
},
//required: false
}
}
const rows = await Event.findAll(query);
添加 required: false将简单地忽略所有事件并简单地返回所有事件。如果一个事件的 occurrence.date过去它不应该选择该事件,但是它会选择并且只是省略了该事件。

最佳答案

在包含的模型中具有 where 条件插入条件为 ON连接查询中的短语,但这里我们需要在执行连接后的 where 条件下使用它。
所以解决方案是不要在包含的模型旁边给出 where 条件,而是在主要的 中提及它。查找全部 查询 where目的。

const query = {
where: {
[Op.and]: {
'$Occurrence.date$': {
[Op.or]: {
[Op.eq]: null,
[Op.gte]: Date.now(),
}
}
}
},
include: {
model: Occurrence,
required: false
}
}
引用: https://sequelize.org/master/manual/eager-loading.html#complex-where-clauses-at-the-top-level

关于sequelize.js - Sequelize - 包含模块,而 where 子句是可选的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64713075/

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