gpt4 book ai didi

node.js - Sequelize : How to define a field as a function?

转载 作者:行者123 更新时间:2023-12-03 22:39:35 24 4
gpt4 key购买 nike

我定义了以下模型:

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;
}
}
});

关于node.js - Sequelize : How to define a field as a function?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51632130/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com