如何使用 Sequelize 查询两列是否相等?

How do I query for two columns to be equal using Sequelize?

db.WorkbookQuestion.count({
  where: {
    QuestionId: dbQuestion.id,
    AnswerSelectedId: db.sequelize.col('CorrectAnswerId')
  }
});

查询生成此 SQL:SELECT count(*) AS "count" FROM "WorkbookQuestions" AS "WorkbookQuestion" WHERE "WorkbookQuestion"."QuestionId" = 1103 AND "CorrectAnswerId";

如何让它更像 AnswerSelectedId = CorrectAnswerId

您可以通过 sequelize.where():

db.WorkbookQuestion.count({
  where: sequelize.where(
    db.sequelize.col('CorrectAnswerId'),
    db.sequelize.col('AnswerSelectedId')
  )
});

今天我在这个问题上卡住了一段时间,直到找到这个答案。我还找到了执行相同查询的另一种方法,因此将在此处留下另一个答案。

db.WorkbookQuestion.count({
  where: {
    CorrectAnswerId: {
        $col: 'AnswerSelectedId'
    }
  }
});

更新:另一种使用sequelize中的Operators(Op)编写代码的方法。

const { Op } = require('sequelize');

db.WorkbookQuestion.count({
  where: {
    QuestionId: dbQuestion.id,
    CorrectAnswerId: {
        [Op.eq]: sequelize.col('AnswerSelectedId')
    }
  }
});