Суть в следующем: имеется некоторая форма на веб-странице, в ней есть список однотипных элементов, которые пользователь может добавлять, удалять и изменять.
При отправке на сервер данных необходимо обновлять уже существующие элементы, создавать новые и удалять удаленные.
Если подходить наивно, то получается очень некрасивая схема:
- На сервере получаем список всех элементов из базы данных
- Проходимся по полученному с клиента списку элементов
- Если у элемента есть идентификатор и в базе данных элемент с таким идентификатором присутствует, то соответствующий элемент обновляется
- Если у элемента нет идентификатора или в базе данных нет элемента с таким идентификатором, то соответствующий элемент создается
- Все те элементы, которых не было в полученном списке удаляются (помечаются как удалённые).
- На клиент возвращаются обновленные элементы и список выводит именно их
Я чувствую, что есть какое-то более красивое решение и, вероятно, принятое для решения этой задачи, но пока не могу найти его.