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

Sequelize.js Sequelize-包含模块,而where子句是可选的,sequelize.js,Sequelize.js,男人的支持很差 我正在尝试获取所有行并包含另一个表,其中where子句是可选的 给出下表(我知道它有错误,只是为了演示) 我想获取所有事件,包括它们的发生,而occurrence.date>现在或事件根本没有发生 到目前为止,我已经尝试了几种方法: const query = { where: {}, include: { model: Occurrence, where: { date: { [

男人的支持很差

我正在尝试获取所有行并包含另一个表,其中
where
子句是可选的

给出下表(我知道它有错误,只是为了演示)

我想获取所有事件,包括它们的发生,而
occurrence.date>现在
或事件根本没有发生

到目前为止,我已经尝试了几种方法:

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
将简单地忽略所有事件,并简单地返回所有事件。如果一个事件的
事件.date
是过去的,它不应该选择该事件,但是它会选择并忽略该事件。

在包含的模型中具有where条件在联接查询中插入带有
ON
短语的条件,但是在执行联接后,我们需要它在where条件中。
因此,解决方案是不要在包含的模型旁边给出where条件,并在主findAllquery
where
对象中提及它

const查询={
其中:{
[作品及]:{
“$Occurrence.date$”:{
[点评]:{
[Op.eq]:空,
[Op.gte]:日期现在(),
}
}
}
},
包括:{
模式:发生,
必填项:false
}
}
参考:

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);