我定义了以下模型:
const Project = sequelize.define('project', {
version: {
type: DataTypes.STRING,
field: Sequelize.fn('concat', Sequelize.col('version_major'), '.', Sequelize.col('version_minor'))
}
});
然后,我尝试使用以下参数执行findAll
:
myProjectModel.findAll({
where: { version: '2.0' },
attributes: ['version']
});
但是我遇到以下错误:
SequelizeDatabaseError: Unknown column '[object Object]' in 'where clause`
但是,如果删除where子句,则该属性可以正常工作。 Sequelize在select子句中正确翻译了字段,但在where子句中错误地翻译了字段:
SELECT concat(`version_major`, '.', `version_minor`) AS `version` FROM `project` WHERE `project`.`[object Object]` IN ('2.0');
有什么想法吗? getterMethods
不适用于findAll
方法。
答案 0 :(得分:0)
我认为您需要的是插入之前的setter
方法:
const Project = sequelize.define('project', {
version: {
type: DataTypes.STRING,
set(val){
let version_major = this.setDataValue('version_major');
let version_minor = this.setDataValue('version_minor');
return version_major+'.'+version_minor;
}
}
});