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



我希望在运行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.state"将起作用,但来自具有N:N关联的模型的请求将给出错误:

"invalid reference to FROM-clause entry for table " project  ""

条件应为"projects.state">

如果工作,如果我使用";作为:项目;对于每个查询都包含在内,但如果有人有好主意的话。

感谢您的帮助

最好的方法是强制sequelize.js使用模型中提到的原始名称,同时在数据库中创建表。您可以使sequelizes.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 的文档中看到这两种方法

最新更新