Получить только что удаленный документ

Я удалил документ, но я все еще вижу его в _changes , поэтому я вижу последний действительный _rev , который удаляется, поэтому возвращает doc с идентификатором и последней _rev :

 { "_id":"25efa4ec8489d8b89b34c5cad6000059", "_rev":"3-a982bd6dccce8f405433f8453ab86880", "_deleted":true } 

и никаких других атрибутов.

Как я могу оправиться в этой ситуации? Предыдущий _changes не может быть замечен в _changes . Будет ли писать пустой документ (установка _deleted на false ), чтобы просмотреть всю информацию о _deleted ?

Хорошо, понял, если кто-то заинтересован:

  1. получить удаленную историю, например:

     curl http://example.iriscouch.com/test/_changes 
  2. вы увидите удаленные документы с $id и $rev , поместите пустой документ в новую версию, например:

     curl -X PUT http://example.iriscouch.com/test/$id?rev=$rev -H "Content-Type: application/json" -d {} 
  3. теперь вы можете получить всю информацию о версиях, например:

     curl http://example.iriscouch.com/test/$id?revs_info=true 
  4. получить версию перед удалением, например:

     curl http://example.iriscouch.com/test/$id?rev=$prev_rev 
  5. верните его на couchdb, например:

     curl -X PUT http://example.iriscouch.com/test/$id?rev=$rev -H \'Content-Type: application/json\' -d \'$data\' 

Дайте мне знать, если у вас есть лучший способ или сценарий.

Просто восстановление удаленных данных с couchdb. Вот как я решил это после небольшой помощи от добрых людей на couchdb irc.

1) Запрос запроса на $db/$id?revs=true&open_revs=all где $db – это ваше имя базы данных, а $id – идентификатор документа, который вы удалили.

2) Очистите ответ. Результат этого запроса недействителен json, как ни странно, и требует очистки. Следующие работали для меня:

var deletedDoc = JSON.parse(xhReq.responseText.substring(xhReq.responseText.indexOf("{"), xhReq.responseText.lastIndexOf("}") + 1));

Полученный объект выглядит следующим образом:

  { "_id":"37b580b03b903da2b50f88587d89c15d", "_rev":"2-bf3a2888dfe1ce0facef18720dcf97e2", "_deleted":true, "_revisions":{ "start":2, "ids":["bf3a2888dfe1ce0facef18720dcf97e2","85f141069731f6bc77c910b0341e599f"] } } 

3) Теперь мы можем построить последний номер ревизии, тот, который был удален до его удаления. Вытяните второй указатель в массиве _revisions.ids и добавьте его с _revisions.start-1 и символом «-». Это дает вам идентификатор документа документа перед его удалением.

 var preDeleteRevisionNumber = (deletedDoc._revisions.start - 1) + "-"+ deletedDoc._revisions.ids[1]; 

4) Теперь собирайте исходные данные (данные для предварительного использования) с получением значения $db/$id?rev=$preDeleteRevisionNumber

5) Чтобы перезаписать старую удаленную запись, вам необходимо отправить или вернуть документ с правильным идентификатором и последним номером ревизии (а не номером ревизии предварительного удаления, а номером ревизии, который теперь был удален из документа).

Надеюсь, это поможет кому-то.

Сообщение в блоге об удалении документов CouchDB

У меня есть статья об этом. Надеюсь, кто-то может найти это полезным из-за более подробного описания вещей и более дружественной ориентации юниоров. Приветствия.

Давайте будем гением компьютера.