bookshelf.js 时间戳不起作用

Posted

技术标签:

【中文标题】bookshelf.js 时间戳不起作用【英文标题】:bookshelf.js timestamps not working 【发布时间】:2014-10-04 20:15:24 【问题描述】:

我现在正在试验 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.save() 之前也调用u.timestamp() 似乎没有任何效果。

我在这里做错了什么?

【问题讨论】:

【参考方案1】:

哈,我终于明白了!

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

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

【讨论】:

在添加 'hasTimestamps: true' 后,updated_at 工作正常,但它不响应 updatedData。它只在数据库中更新【参考方案2】:

打字稿中的示例

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

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


export default User;

【讨论】:

以上是关于bookshelf.js 时间戳不起作用的主要内容,如果未能解决你的问题,请参考以下文章

Phonegap Camera LaunchMode 冲突

修改php.ini不起作用是为啥

Angular 的 $http.post 不起作用,它的 $http... 也不起作用,但 jQuerys ajax 起作用。为啥?

navigator.mediaDevices.getUserMedia 不起作用,webkitGetUserMedia 也不起作用

使用 foreach 循环的简单查询不起作用,但不起作用

代码不起作用 - SetDwordValue 在 vbs 中不起作用