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中写下我的路线时,这些日期会带有时间戳。
答案 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
})