Mitja,

Perhaps you could record in some other field that the doc with type
"bar" used to be type "foo".

Then way you can filter the replication by docs where:
  type == "foo" || type == "bar" && old_type == "foo"

This should then replicate docs that change their type from "foo" to "bar".

To give any better advice, I'd need to hear more concretely what
you're trying to do here.

-Zach

On Sunday, July 10, 2011, Mitja Kleider <[email protected]> wrote:
> On Sat, 2011-07-09 at 17:26 -0500, Zachary Zolton wrote:
>> Could you change your filter to something like this?
>>
>> function(doc) {
>>   return doc._deleted || doc.type == 'foo';
>> }
>>
>> That way you replicate all deleted docs.
>
> That would work, thanks. I tried to avoid replicating millions of
> deleted documents together with a few hundred documents passing the
> filter.
>
> A solution might be this validate_doc_update function on the target
> database:
>
> function(newDoc, oldDoc, userCtx) {
>     if (newDoc._deleted === true && !oldDoc) {
>         throw({forbidden: 'do not create deleted docs'});
>     }
> }
>
> This way all deleted documents will be transmitted, but at least not
> written if there is no previous revision.
>
>
> The problem for changed values remains: when the source database changes
> type='foo' to type='bar', the target database keeps the old revision
> with type='foo'.
>
>
> Mitja
>
>

Reply via email to