Node.js 续集:如何将字段定义为函数?

Node.js 续集:如何将字段定义为函数?,node.js,sequelize.js,Node.js,Sequelize.js,我定义了以下模型: const Project = sequelize.define('project', { version: { type: DataTypes.STRING, field: Sequelize.fn('concat', Sequelize.col('version_major'), '.', Sequelize.col('version_minor')) } }); 然后我尝试使用以下参数执行findAll: myProjectModel.find

我定义了以下模型:

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
方法。

我认为您需要的是
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;
    }
  }
});