postgresql 使用sequelize连接postgres中的三个表关联,其中第三个关联具有空值-嵌套包含

gmxoilav  于 2022-11-04  发布在  PostgreSQL
关注(0)|答案(1)|浏览(158)

我有三个以嵌套顺序相互关联的表,比如A hasManyB和B hasOneC。
确切地说,把我表名看作是一个作业、一个问题和一个答案。
虽然作业会有这么多的问题,而问题会有一个答案,由每个学生回答。
现在我需要一个过滤器来获取学生未回答的问题。
我的查询如下所示,

const assignments = await Assignments.findAndCountAll({
  where: [
    condition,
    sequelize.where(sequelize.col('questions.answer.id'), 'IS', null),
  ],
  include: [
    {
      model: AssignmentQuestion,
      as: 'questions',
      duplicating: false,
      include: {
        model: AssignmentQuestionAnswer,
        as: 'answer',
        where: {
          stdentId: req.user.id,
        },
        required: false,
      },
    },
  ],
  distinct: true,
  offset: 1,
  limit: 10,
  order: [['createdAt, 'asc']],
});

这个代码的问题是,即使限制为10,总计数为12,我在第1页也只能得到6行。

Assignments.hasMany(models.AssignmentQuestion, {
    foreignKey: 'assignmentId',
    as: 'questions',
});

AssignmentQuestion.hasOne(models.AssignmentQuestionAnswer, {
    foreignKey: 'questionId',
    as: 'answer',
});

是否有解决此问题的方法???

xzabzqsa

xzabzqsa1#

如果在嵌套的include中使用where:{id: null, stdentId: req.user.id,}而不是sequelize.where(),会怎么样?
如果sequelize.where超过了一个required:false或类似的东西,你可以共享logginsql?Idk(我怀疑不是,但你可以试试?)

相关问题