如何解决使用 knex.fn.now() 自动添加日期的 knex 和时区
我在 express 中使用 knex.js。 当我插入或更新一些记录时,我遇到了一个问题,我得到了服务器的时间戳,而不是我使用以下指令在 express 中设置的时间戳。
process.env.TZ = 'Asia/Karachi';
虽然只要我现在在 express 中使用上述方法就可以正常工作,但是当我插入一条记录时,时区是服务器的而不是我指定的时区,所以我用谷歌搜索并找到了几种解决方案。 以下是我的迁移之一:
import * as Knex from 'knex';
export async function up(knex: Knex): Promise<void> {
return knex.schema.createTable('companies',function(table: Knex.TableBuilder) {
table.bigIncrements().primary();
table.string('name',255).notNullable();
table.text('address').notNullable();
table.string('slug').notNullable();
table.string('mobile').notNullable();
table.enu('status',[ 'enable','disable' ]).notNullable().defaultTo('enable');
table.enu('type',[ 'sole','distribution','both' ]).notNullable();
table.timestamp('created_at').defaultTo(knex.fn.Now());
table.timestamp('last_updated_at').defaultTo(knex.fn.Now());
});
}
export async function down(knex: Knex): Promise<void> {
return knex.schema.dropTableIfExists('companies');
}
如您所见,我在创建迁移时添加了 knex.fn.Now 作为默认时间。
module.exports = {
development: {
client: CLIENT,connection: {
database: DATABASE,user: PG_USER,password: PASSWORD,host: HOST,timezone: '+05:00'
},migrations: {
tableName: 'knex_migrations'
}
},staging: {
client: CLIENT,pool: {
min: 2,max: 10
},production: {
client: CLIENT,migrations: {
tableName: 'knex_migrations'
}
}
};
我也尝试在生产连接下设置为以下也不起作用。
时区:“亚洲/卡拉奇”
我也尝试在生产池中添加 afterCreate 方法,但也没有奏效。
pool: {
afterCreate: function(connection,callback) {
connection.query('SET time_zone = Asia/Karachi;',function(err) {
callback(err,connection);
});
}
}
当我添加一条记录时,我没有为时间戳分配日期,所以我在 2021-01-22T02:53:53.000Z
创建的时间是早上 12:am。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。