Como resolver conflitos com replicação contínua

Sou novo no CouchDB e no PouchDB e estou usando-o para criar um sistema de gerenciamento de contatos que sincroniza em dispositivos móveis e de desktop e pode ser usado off-line. Eu estou vendo que usar o PouchDB é infinitamente mais fácil do que ter que escrever um backend PHP / MySQL.

Eu tenho usado com êxito, e quando eu faço alterações conflitantes em dispositivos offline, o CouchDB usa um algoritmo para escolher arbitrariamente um vencedor e, em seguida, envia-o corretamente para todos os dispositivos.

O que eu gostaria de fazer é implementar um algoritmo personalizado para mesclar registros conflitantes. Aqui está o algoritmo que eu gostaria de usar:

Se um registro for excluído em um cliente e apenas atualizado em outro, a versão atualizada vencerá, a menos que ambos os clientes concordem com a exclusão.O registro com o registro de data e hora "modificado" mais recente torna-se o mestre e o registro mais antigo se torna o secundário.Todos os campos que existem apenas no secundário (ou estão vazios no mestre) são movidos para o mestre.A revisão principal é salva e o secundário é excluído.

O guia do CouchDB tem uma boaexplicação, mas não tenho a menor idéia de como implementá-lo com a API do PouchDB durante uma replicação contínua. De acordo comAPI do PouchDB, há um ouvinte "onChange" nas opções de replicação, mas não entendo como usá-lo para interceptar conflitos.

Se alguém pudesse escrever um breve tutorial incluindo um exemplo de código, eu e muitos outros usuários do PouchDB agradeceríamos!

questionAnswers(1)

yourAnswerToTheQuestion