如何在 Knex 中对种子进行版本控制?
How to version seeds in Knex?
我有一个 sql 文件,我在其中为 运行 写了一些句子,该文件包含如下句子:
-- =======================2019-02-01=======================
UPDATE rating set stars = 3 where id = 6;
UPDATE users SET status = 'A' where last_login >= '2019-01-01';
INSERT INTO....
-- =======================2019-02-15=======================
UPDATE rating set stars = 3 where id = 6;
UPDATE users SET status = 'A' where last_login >= '2019-01-01';
INSERT INTO....
我 运行 在每个发布日期都写了具体的句子,但我认为这是不好的做法,而且没有可升级的方法。
我正在尝试将此方法更改为 Knex 种子或迁移。这样做的最佳做法是什么?
种子有问题,因为每次我写命令时knex都会执行种子knex seed:run
,它会显示一些错误。
Knex 存储它已执行的文件名和签名,因此它不需要再次 运行 它们。
https://knexjs.org/#Installation-migrations
您可以通过编程方式执行这样的迁移:
knex({..config..}).migrate.latest({
directory: 'migrations', // where the files are stored
tableName: 'knex_migrations' // where knex saves its records
});
示例迁移文件
exports.up = function(knex) {
return knex.raw(`
UPDATE rating set stars = 3 where id = 6;
UPDATE users SET status = 'A' where last_login >= '2019-01-01';
INSERT INTO....
`)
};
文件将被执行 alphabetically/sorted,并且不会针对同一个数据库重新执行。
我有一个 sql 文件,我在其中为 运行 写了一些句子,该文件包含如下句子:
-- =======================2019-02-01=======================
UPDATE rating set stars = 3 where id = 6;
UPDATE users SET status = 'A' where last_login >= '2019-01-01';
INSERT INTO....
-- =======================2019-02-15=======================
UPDATE rating set stars = 3 where id = 6;
UPDATE users SET status = 'A' where last_login >= '2019-01-01';
INSERT INTO....
我 运行 在每个发布日期都写了具体的句子,但我认为这是不好的做法,而且没有可升级的方法。
我正在尝试将此方法更改为 Knex 种子或迁移。这样做的最佳做法是什么?
种子有问题,因为每次我写命令时knex都会执行种子knex seed:run
,它会显示一些错误。
Knex 存储它已执行的文件名和签名,因此它不需要再次 运行 它们。
https://knexjs.org/#Installation-migrations
您可以通过编程方式执行这样的迁移:
knex({..config..}).migrate.latest({
directory: 'migrations', // where the files are stored
tableName: 'knex_migrations' // where knex saves its records
});
示例迁移文件
exports.up = function(knex) {
return knex.raw(`
UPDATE rating set stars = 3 where id = 6;
UPDATE users SET status = 'A' where last_login >= '2019-01-01';
INSERT INTO....
`)
};
文件将被执行 alphabetically/sorted,并且不会针对同一个数据库重新执行。