问题描述
我有一个表设置有时间戳和书架配置使用它们。 通常情况下,所有事情都应该发生,并且书架会处理时间戳,但我有一个案例需要指定它们,但是当我尝试这样做时,会忽略这些值并使用当前日期。
我试图将我的用例简化为基本要素:
var Author = Bookshelf.Model.extend({
tableName: 'authors',
hasTimestamps: ['created_at', 'updated_at'],
bookAuthors: function(){
return this.hasMany(require('.book_authors'));
},
associateBookWithAuthor(bookId,timestamp) {
return self.related('bookAuthors').create({
book_id: bookId,
updated_at: timestamp, // ignored by bookshelf
created_at: timestamp // also ignored
})
}
}
我仍然希望保持为常规用例配置hasTimestamps
。
是否有可能让Bookshelf让我覆盖时间戳行为?
1楼
Gangstead
5
2015-07-27 21:01:41
查看Bookshelf源后,create_at和updated_at会根据需要在create / insert上设置,并且永远不会从您传入的模型中读取: :
这使我的目标变得不可能。 反思这似乎是一个好主意,不要重载这些列,并为我试图存储的日期创建另一列。
2楼
Subramanyam S
1
已采纳
2019-02-21 06:10:52
只是为这个问题的新访问者更新正确的答案。 最新的书架允许覆盖时间戳值。
请参阅此处的官方文档和示例
myModel.save({created_at: new Date(2015, 5, 2)}).then(function(updatedModel) {
// {
// name: 'blah',
// created_at: 'Tue Jun 02 2015 00:00:00 GMT+0100 (WEST)',
// updated_at: 'Sun Mar 25 2018 15:07:11 GMT+0100 (WEST)'
// }
})