在 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 编译器。
我的问题: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 编译器。