Допустим, у меня есть прослушиватель событий для обновления состояния пользователя.
Состояние до:
{
email: "old@email.com",
name: "John"
}
события, поступающие в порядке:
eventA = {
fields: ["email"],
timestamp: 1541531309
before: {
email: "old@email.com"
},
after: {
email: "new@email.com"
}
}
eventB = {
fields: ["email", "name"],
timestamp: 1541531310
before: {
email: "old@email.com",
name: "John"
},
after: {
email: "new@email.com",
name: "Bill"
}
}
eventC = { // same as A
fields: ["email"],
timestamp: 1541531309
before: {
email: "old@email.com"
},
after: {
email: "new@email.com"
}
}
Желаемое состояние после:
{
email: "new@email.com",
name: "Bill"
}
Как правильно фильтровать события без :
- сохранение всего события, всех событий
- зацикливание на каждом поле / значении событий
Немного магии / хэширования / контрольной суммы?
P.S. можно добавить дополнительную информацию к самому событию.
Спасибо.