Rozwiązywanie konfliktów replikacji dla usuniętych dokumentów w CouchDB

Sposób rozwiązywania konfliktów replikacji zalecany przez oficjalną dokumentację to:

Czytaj sprzeczne wersje za pomocą dokumentów_conflicts pole (np. przez widok)Pobierz dokumenty dla wszystkich wymienionych wersjiWykonaj scalanie specyficzne dla aplikacjiUsuń niechciane wersje

Problem pojawia się, gdy chcę się połączyćusunięte dokumenty. Nie pojawiają się w_conflicts pole, ale w_deleted_conflicts. Jeśli łączę tylko używając_conflicts pole, a dokument zostanie usunięty z lokalnej bazy danych i edytowany w zdalnej replice, zostanie wskrzeszony lokalnie podczas replikacji. Mój model aplikacji zakłada, że ​​usuwanie zawsze ma pierwszeństwo podczas łączenia: usunięte dokumenty pozostają usuwane niezależnie od tego, z jakimi edycjami koliduje.

Na pierwszy rzut oka najprościej jest to sprawdzić_deleted_conflicts nie jest pusty, a jeśli nie jest pusty, usuń dokument, prawda? Cóż ... problem z tym polega na tym, że może to również zawierać usunięte wersje wprowadzone przez rozwiązanie konfliktów edycji w kroku 4, więc znaczenie_deleted_conflicts jest w tym przypadku niejednoznaczny.

Jaki jest kanoniczny sposób radzenia sobie z konfliktami usuwania w CouchDB (jeśli istnieje), który nie wiąże się z robieniem rażących rzeczy, takich jak oznaczanie dokumentów jako usunięte i filtrowanie w warstwie aplikacji?

questionAnswers(1)

yourAnswerToTheQuestion