如何在Knex中修改种子?

问题描述 投票:0回答:1

我有一个sql文件,我在其中为run in release编写句子,这个文件包含如下句子:

-- =======================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时都会执行种子,并显示一些错误。

database-migration knex.js
1个回答
2
投票

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

文件将按字母顺序/已排序执行,并且不会针对同一数据库重新执行。

© www.soinside.com 2019 - 2024. All rights reserved.