在我的路由响应中发送时间戳,但我在数据库中的表没有显示时间戳

时间:2017-04-25 00:08:02

标签: postgresql knex.js bookshelf.js



exports.up = (knex, Promise) => knex.schema.createTable('cohorts', (table) => {
  table.increments('id')
  .primary();
  table.string('name', 'varchar(6)')
  .notNullable();
  table.string('type', 'varchar(3)')
  .notNullable();
  table.date('q1_start_date')
  .notNullable();
  table.date('q2_start_date')
  .notNullable();
  table.date('q3_start_date')
  .notNullable();
  table.date('q4_start_date')
  .notNullable();
  table.date('graduation_date')
  .notNullable();
  table.integer('campus_id')
  .notNullable()
  .references('id')
  .inTable('campuses')
  .onDelete('CASCADE');
  table.timestamps(true, true);
});

exports.down = (knex, Promise) => knex.schema.dropTable('cohorts');




我正在使用postgresql创建我的数据库,当我在数据库中检查我的表时,我在迁移中使用日期,它以日期格式存储;但是当我在bookshelf.js中写下我的路线时,这些日期会带有时间戳。

Here is my response with the timestamp

1 个答案:

答案 0 :(得分:1)

node-postgres驱动程序从数据库中读取列的日期类型时,它会自动将其转换为javascript的Date对象,该对象实际上具有日期和时间。

如果你想使用这个包https://github.com/brianc/node-pg-types

,你可以配置pg驱动程序以字符串格式返回日期

日期类型的类型ID是:

mikaelle=# select typname, oid, typarray from pg_type where 
pg_type.typname = 'date' order by oid;
 typname | oid  | typarray 
---------+------+----------
 date    | 1082 |     1182
(1 row)

设置解析类型的代码可以这样完成:

var types = require('pg').types
types.setTypeParser(1082, function(val) {
  return val; // just pass the string
})