Knexjs 返回 mysql 时间戳、日期时间列作为 Javascript 日期对象
Knexjs returning mysql timestamp, datetime columns as Javascript Date object
我正在使用 knexjs,我以 YYYY-MM-DD HH:mm:ss
格式插入数据,例如 2017-07-14 15:00:00
,并且在获取数据时保存后,日期时间列值被 return 编辑为 javasript Date 对象。
我想 return 那些格式为 YYYY-MM-DD HH:mm:ss
的对象,但它 return 格式为 YYYY-MM-DDTHH:mm:ss.000Z
,例如 2017-06-23T06:44:44.000Z
。
我 return 通过手动迭代和转换它们来处理它们。我想知道是否有另一种方法可以像在 mysql 驱动程序或 knexjs 配置中那样做。目前我的 knexjs 配置是这样的。
var connection = require('knex')({
client: 'mysql',
connection: {
host: db.host,
user: db.user,
password: db.password,
database: db.database,
timezone: 'UTC'
}
});
用这个更改你的连接对象:
var connection = require('knex')({
client: 'mysql',
connection: {
host: db.host,
user: db.user,
password: db.password,
database: db.database,
timezone: 'UTC',
dateStrings: true
}
});
这就是 mysql 驱动程序如何将从数据库读取的类型转换为 javascript (https://github.com/mysqljs/mysql#type-casting)
您可以通过添加 typeCast
连接选项来覆盖默认转换:
var moment = require('moment');
var connection = require('knex')({
client: 'mysql',
connection: {
host: db.host,
user: db.user,
password: db.password,
database: db.database,
timezone: 'UTC',
typeCast: function (field, next) {
if (field.type == 'DATETIME') {
return moment(field.string()).format('YYYY-MM-DD HH:mm:ss');
}
return next();
}
}
});
我不确定您是否需要为 DATETIME
或 TIMESTAMP
类型添加自定义解析。
在我的例子中,连接是一个字符串,所以我必须找到日期 OID 并使用
pg.types.setTypeParser(DATE_OID, d => moment(d));
我正在使用 knexjs,我以 YYYY-MM-DD HH:mm:ss
格式插入数据,例如 2017-07-14 15:00:00
,并且在获取数据时保存后,日期时间列值被 return 编辑为 javasript Date 对象。
我想 return 那些格式为 YYYY-MM-DD HH:mm:ss
的对象,但它 return 格式为 YYYY-MM-DDTHH:mm:ss.000Z
,例如 2017-06-23T06:44:44.000Z
。
我 return 通过手动迭代和转换它们来处理它们。我想知道是否有另一种方法可以像在 mysql 驱动程序或 knexjs 配置中那样做。目前我的 knexjs 配置是这样的。
var connection = require('knex')({
client: 'mysql',
connection: {
host: db.host,
user: db.user,
password: db.password,
database: db.database,
timezone: 'UTC'
}
});
用这个更改你的连接对象:
var connection = require('knex')({
client: 'mysql',
connection: {
host: db.host,
user: db.user,
password: db.password,
database: db.database,
timezone: 'UTC',
dateStrings: true
}
});
这就是 mysql 驱动程序如何将从数据库读取的类型转换为 javascript (https://github.com/mysqljs/mysql#type-casting)
您可以通过添加 typeCast
连接选项来覆盖默认转换:
var moment = require('moment');
var connection = require('knex')({
client: 'mysql',
connection: {
host: db.host,
user: db.user,
password: db.password,
database: db.database,
timezone: 'UTC',
typeCast: function (field, next) {
if (field.type == 'DATETIME') {
return moment(field.string()).format('YYYY-MM-DD HH:mm:ss');
}
return next();
}
}
});
我不确定您是否需要为 DATETIME
或 TIMESTAMP
类型添加自定义解析。
在我的例子中,连接是一个字符串,所以我必须找到日期 OID 并使用
pg.types.setTypeParser(DATE_OID, d => moment(d));