Я использую knex.js для работы с SQL-запросами. У меня есть таблица с выбором информации, например
{
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 и имеет крючки для изменения данных перед вставкой/обновлением.
С помощью knes, вероятно, самый простой способ поддержать это было бы написать отдельную вспомогательную функцию для обновления этой таблицы, которая всегда также устанавливает дату в вашем случае.
Другим способом было бы написать обработчик событий к событию knex.on('start',...), посмотреть внутренности построителя запросов, и если вы узнаете, что обновление message_opt_in обновлено, вы можете добавить также обновление для столбца message_opt_in_date.
В любом случае, я бы не предложил 3-й способ, так как он может сломаться, когда обновляется нокаут.