我有一个表格,在数据库引擎中生成预计算的值比在应用程序代码中更有利。为此,我使用了Postgres的生成列功能。SQL如下:
ALTER TABLE "Items"
ADD "generatedValue" DOUBLE PRECISION GENERATED ALWAYS AS (
LEAST("someCol", "someOtherCol")
) STORED;
这个方案很好,但是我正在使用 Sequelize 操作这个数据库。 我希望找到一种在模型定义中定义该列的方法,使 Sequelize 能够查询它,而不是尝试更新该列的行值,并在同步时创建该列。
class Item extends Sequelize.Model {
static init(sequelize) {
return super.init({
someCol: Sequelize.DOUBLE,
someOtherColl: Sequelize.DOUBLE,
generatedValue: // <<<-- What goes here??
});
}
}
如何使用Sequelize实现这一点?
我可以将列指定为DOUBLE,Sequelize会读取它,但是在同步时该列不会被正确创建。也许有一些后置同步钩子可以使用?我正在考虑使用afterSync
删除该列并重新添加带有生成值语句的列,但是首先需要检测该列是否已经转换,否则可能会丢失数据。(我在每次应用程序启动时运行sync [没有force:true
]。)
任何想法或替代方案都将不胜感激。