ドキュメントを削除しましたが、_changes
に表示されているので、削除された最後の有効な_rev
を確認できます。したがって、idと最後のリビジョンのドキュメントを取得すると次のようになります。
{
"_id":"25efa4ec8489d8b89b34c5cad6000059",
"_rev":"3-a982bd6dccce8f405433f8453ab86880",
"_deleted":true
}
その他の属性はありません。
この状況でどのように回復できますか?以前のリビジョンは_changes
に表示されません。空のドキュメントを書き込む(_deleted
をfalse
に設定する)と、すべてのリビジョン情報を確認できますか?
興味のある人がいれば、わかりました。
削除された履歴を取得します。例:
curl http://example.iriscouch.com/test/_changes
$id
と$rev
が付いた削除済みドキュメントが表示されます。空のドキュメントを新しいバージョンとして配置します。例:
curl -X PUT http://example.iriscouch.com/test/$id?rev=$rev -H "Content-Type: application/json" -d {}
これで、すべてのリビジョン情報を取得できます。例:
curl http://example.iriscouch.com/test/$id?revs_info=true
削除する前にバージョンを取得します。例:
curl http://example.iriscouch.com/test/$id?rev=$prev_rev
それをcouchdbに戻します。例:
curl -X PUT http://example.iriscouch.com/test/$id?rev=$rev -H \'Content-Type: application/json\' -d \'$data\'
もっと良い方法やスクリプトがあれば教えてください。
Couchdbから削除されたデータを復元しています。これは、couchdvircの善良な人々からの少しの助けの後に私がそれを解決した方法です。
1)_$db/$id?revs=true&open_revs=all
_へのgetリクエスト。_$db
_はデータベース名、_$id
_は削除したドキュメントのIDです。
2)応答をクリーンアップします。このリクエストの結果は、奇妙なことに有効なjsonではなく、クリーニングが必要でした。以下は私のために働いた:
var deleteDoc = 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配列の2番目のGUIDを引き出し、_revisions.start-1と「-」文字を追加します。これにより、削除される直前のドキュメントのリビジョンIDがわかります。
_var preDeleteRevisionNumber = (deletedDoc._revisions.start - 1) + "-"+ deletedDoc._revisions.ids[1];
_
4)_$db/$id?rev=$preDeleteRevisionNumber
_にアクセスして、元の(削除前のデータ)を収集します
5)削除された古いエントリを上書きするには、正しいIDと最新のリビジョン番号(削除前のリビジョン番号ではなく、ドキュメントが削除されたリビジョン番号)でドキュメントを投稿または戻す必要があります。
これが誰かを助けることを願っています。
それについての記事があります。物事のより詳細な説明とよりジュニアフレンドリーなオリエンテーションのために誰かがそれが役に立つと思うかもしれないことを願っています。乾杯。