【发布时间】:2019-09-30 23:57:53
【问题描述】:
我使用 knex.js,它是 PostgreSQL 的优秀查询构建器。我还没有找到任何文档来解释如何以正确的方式进行迁移回滚。
目前,我只是在down 函数中编写反向迁移操作来进行迁移回滚。这是正确的方法吗?
import * as Knex from 'knex';
exports.up = async (knex: Knex): Promise<any> => {
await knex.schema.raw(`
ALTER TABLE IF EXISTS "GOOGLE_CHANNEL"
ADD COLUMN IF NOT EXISTS google_channel_ad_group_cpc_bid INTEGER NOT NULL DEFAULT 0;
`);
await knex.schema.raw(`
UPDATE "GOOGLE_CHANNEL" as gc
SET
google_channel_ad_group_cpc_bid = 7
FROM "CAMPAIGN_TEMPLATE" as ct
WHERE ct.campaign_channel_id = gc.campaign_channel_id;
`);
};
exports.down = async (knex: Knex): Promise<any> => {
// TODO: migration rollback
await knex.schema.raw(``);
};
我有两个担心:
如果
up函数中有很多SQL语句,为了回滚迁移,我也必须在down函数中写很多SQL语句。为什么knex.js不为我们写逆向操作不做迁移回滚?我的意思是,knex.js 可以拍摄快照或记录数据库的保存点。
【问题讨论】:
标签: node.js database-migration knex.js