在 Knex 迁移中使用控制台日志而不是日志记录

Using console log in Knex migration not logging

我的问题:console.log('tableNobject: ', tableNobject) 不登录 knex 迁移。
下面的代码是我试过的:

// solution A
export async function up(knex: Knex) {
  const tableAobject = await knex.select('*').from('tableAobject');
  console.log('tableAobject: ', tableAobject);
}

// solution B
export async function up(knex: Knex) {
  await knex.select('*').from('tableBobject').then((tableBobject) => {
    console.log('tableBobject: ', tableBobject);
  });
}

但是我的终端输出如下:

Migration Starting ...
Migrated
Migration Done.

这些日志来自我们调用 database.migrate.latest()

的迁移脚本

我对上面代码的预期终端输出是这样的:

Migration Starting ...
tableNobject: [
  {
    id: 'randomId'
    someData: 'someDataString'
    ...
  },
  ...
]
Migrated
Migration Done.

我知道可以记录您从 knex 获得的 tables,因为当我在迁移流程之外设置测试脚本时,我可以毫无问题地记录 table。

我已尝试添加以下设置:

const configA = {
  ...
  debug: true,
}

const configB = {
  ...
  log: {
    warn(message) {
      console.log(message)
    },
    error(message) {
      console.log(message)
    },
    deprecate(message) {
      console.log(message)
    },
    debug(message) {
      console.log(message)
    },
  }
}

const configC = {
  ...
  debug: true,
  log: {
    warn(message) {
      console.log(message)
    },
    error(message) {
      console.log(message)
    },
    deprecate(message) {
      console.log(message)
    },
    debug(message) {
      console.log(message)
    },
  }
};

上面的不同设置没有给我想要的终端登录。

基本设置(不知道这个有没有附加值):

const config = {
  client: 'postgresql',
  connection: {
    host: '127.0.0.1',
    port: '5432',
    database: 'projectName_develop',
    user: 'user',
    password: 'dev',
  },
  pool: {
    min: 2,
    max: 10,
  },
  migrations: {
    tableName: 'knex_migrations',
    directory: path.join(__dirname, 'migrations'),
  },
  seeds: {
    directory: path.join(__dirname, 'seeds'),
  },
  asyncStackTraces: true,
};

所以我的 console.log 没有记录的原因是因为迁移是 TypeScript 文件。
我忘了 运行 命令:npm run build-ts-backed:watch

所以解决方案比手头的问题更容易。当您在 TypeScript 中测试时,请记住 运行 您的 TypeScript 编译器。