Knex.js 在更新其他列时更改列中的日期

Knex.js changing Date in a column when other column is updated

我正在使用 knex.js 来处理 SQL 查询。我有一个 table,其中包含选择信息,例如

{
 market_opt_in: 1
 market_opt_in_date: 2018-02-15 15:51:45
 message_opt_in: 0
 message_opt_in_date: 2018-02-15 15:51:45
 ...
}

等等。

是否可以在个人opt_in更改时更改日期?所以就像

{
 market_opt_in: 1
 market_opt_in_date: 2018-02-15 15:51:45
 message_opt_in: 1 // when this row updated
 message_opt_in_date: 2018-02-20 11:12:13 // date updates as well
 ...
}

使用 objection.js 构建在 knex 之上并具有在插入/更新之前修改数据的挂钩,这更容易实现。

使用 knex 可能最简单的支持方法是编写单独的辅助函数来更新 table,它总是会根据您的情况设置日期。

另一种方法是将事件处理程序写入 knex.on('start', ...) 事件,查看查询生成器内部结构,如果您从那里发现 message_opt_in已更新,您还可以为 message_opt_in_date 列添加更新。

无论如何,我不会建议第三种方式,因为它可能会在 knex 更新时中断。