Include Sequelize:where条件的范围不适用于单数和复数

Include Sequelize:where条件的范围不适用于单数和复数,include,sequelize.js,singular,plural,Include,Sequelize.js,Singular,Plural,我希望在运行1:1和N:N关系的子对象中设置一个有效条件,如下面的示例1:1 // Find all projects with a least one task where task.state === project.state Project.findAll({ include: [{ model: Task, where: { state: Sequelize.col('project.state') } }] }) 只有表的名称根据关系

我希望在运行1:1和N:N关系的子对象中设置一个有效条件,如下面的示例1:1

// Find all projects with a least one task where task.state === project.state
Project.findAll({
    include: [{
        model: Task,
        where: { state: Sequelize.col('project.state') }
    }]
})
只有表的名称根据关系将名称从“project”更改为“projects” 在这种情况下,“project.state”将起作用,但来自具有N:N关联的模型的请求将给出错误:

"invalid reference to FROM-clause entry for table \" project \ ""
条件应为“项目。状态”

如果我在每个查询的include中使用“as:project”,但如果有人有好主意,那么我是否可以工作


感谢您的帮助

最好的方法是强制sequelize.js使用模型中提到的原始名称,同时在数据库中创建表。您可以使sequelize.js使用给定名称而不是复数名称

var db_instance = new Sequelize(config.DB.database, config.DB.username, config.DB.password, {
  host: config.DB.host,
  dialect: config.DB.dialect,
  define: {
    timestamps: true,
    freezeTableName: true
  },
  logging: false
});  

您也可以直接告诉Sequelize表的名称:

sequelize.define('project', {
  // ... (attributes)
}, {
  tableName: 'project'
});
您可以在sequelize.js的中看到这两种方法