2012-05-26 7 views
0

Я стараюсь избегать пересмотра, созданного в моем CouchDB, а также поэтому я могу использовать «массовый вытягивание» TouchDB для репликации (он набирает массу на всех 1-оборотах). Было бы плохая практика просто удалить документ и воссоздать его, а не изменять его, чтобы все документы оставались в rev-1?CouchDB удалять и воссоздать документ

ответ

0

Удаление документа в CouchDB не приведет к сбросу _rev.

CouchDB никогда не удаляет документ, он просто помечает последнюю ревизию как удаленную. Уплотнение удалит предыдущие версии, сохранив только последний. Это необходимо для правильной работы репликации. И поэтому удаленная ревизия документа не должна содержать никаких данных, а только _id документа и флаг _deleted.

Единственный способ полностью удалить любые следы удаленных документов - скопировать все документы в новую базу данных. Но имейте в виду последствия для тиражирования.

+0

Спасибо Марчелло. Я полагаю, что для этого мне нужно будет в значительной степени создать собственный идентификатор и игнорировать _id ..., тогда я могу просто считать каждый документ как совершенно новый ... – ewindsor

+0

Я не уверен, что понимаю, что вы пытаетесь достигать. Я использую пользовательский _id, когда я ссылаюсь на документ по его идентификатору, или, другими словами, когда приложение использует идентификатор для извлечения данных, хранящихся в документе. Это также зависит от того, как вы хотите разрешить конфликты ... но это слишком много для комментария. –

+0

Ну, я имею в виду, что на самом деле создаю новое поле для использования в качестве идентификатора для других документов ... и каждый раз удаляя/воссоздавая. Основная цель здесь состоит в том, чтобы каждый doc был 1-ом. У меня есть чувство, хотя я могу изгибать CouchDB так, как это не должно быть. – ewindsor

0

ну я хочу сказать, что ваше предложение заставляет меня чувствовать себя грязным, но это не было бы ТАК ответить так ..

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

Смежные вопросы