bookshelf.js时间戳不起作用

时间:2014-10-04 20:15:24

标签: javascript node.js bookshelf.js knex.js

我现在正在尝试使用bookshelf.js,并使用以下knex迁移创建了一个示例表:

exports.up = function(knex, Promise) {
  return knex.schema.createTable( "users", function( table ) {
        table.increments();
        table.timestamps();
        table.string( "email" );
    } );
};

然后我定义了一个bookshelf.js模型:

var User = bookshelf.Model.extend( {
    tableName: "users"
} );

并试图保存它:

var u = new User( { email: "john.doe@example.com" } );
u.save();

一切似乎都有效,当我查看数据库时,新用户确实已保存,但时间戳列为NULL。在致电u.timestamp()之前致电u.save()并不会产生任何影响。

我在这里做错了什么?

2 个答案:

答案 0 :(得分:21)

哈,我终于明白了!

你必须告诉模型使用这样的时间戳:

var User = bookshelf.Model.extend( {
    tableName: "users",
    hasTimestamps: true
} );

答案 1 :(得分:0)

打字稿示例

import bookshelf from '../config/bookshelf';

class User extends bookshelf.Model<User> {
  get tableName(): string {
    return 'users';
  }
  get hasTimestamps(): boolean {
    return true;
  }
}

export default User;