2017-01-19 2 views
0

私は名前でCouchDBのデータベースを削除しようとしていますに$を使用してデータベースを削除しません:CouchDBの名前

データベース名がSuperlogin Node.jsのパッケージによって自動的に作成され
supertest$my(2e)name(40)myhost(2e)co(2e)uk 

ので、私は持っていません。名前に$を使用することを制御します(それが問題を引き起こしているのは$です)。

Fauxton管理インターフェイスでこのデータベースを削除しようとすると、削除ボタンをクリックしても何も起こりません。

curl -vX DELETE http://127.0.0.1:5984/supertest$my(2e)name(40)myhost(2e)co(2e)uk 

このAPI呼び出しがエラーで拒否されています:私はまた、次のようにAPIを介して削除しようとした私は、問題自分自身に走ってきた

-bash: syntax error near unexpected token `(' 
+0

フォークトンインターフェイスは、データベースURIにほとんど問題がありません。直接API呼び出しに関しては、私が推測するフィールドをエンコードする必要があります。 –

+0

サーバー自体にリモートアクセスできますか?最悪の場合、 '/ var/lib/couchdb'のデータベースファイルを手動で削除することができます。 –

+0

'curl'コマンドのURLを一重引用符で囲むこともできますが、' $ 'のために補間をしようとしているようです。 –

答えて

1

とSuperlogin APIを使用して終了しました彼らのプライベートDBを除去するための2番目の引数として

superlogin.removeUser(user_id, destroyDBs) 

パスtrueを使用して、ユーザーとそのすべてのデータベースを削除します。

https://github.com/colinskow/superlogin#superloginremoveuseruser_id-destroydbs

+0

ありがとうございました。これにより、ローカルPouchDBとリモート同期されたCouchDBの両方が削除されるのでしょうか、それとも単にCouchDBに影響を与えますか? –

+0

私は確信していません、私はNode内のPouchDBを、ローカルにインストールされたCouchインスタンスのORMとして使用しています。あなたがSuperloginをインスタンス化したのであれば、それがローカルのpouchDBから削除されると思います。これらの変更をリモートのCouchDBに反映させるには、DB上で手動同期を呼び出す必要があるかもしれませんが、やはり私はそれを確信していません。 – Mark

+0

HTTP GET/PUT経由でremoveUserを行う方法はありますか? –

3

私のために、次の作品は:

curl -gvX DELETE 'http://user:[email protected]:5984/client$someuser(40)gmail(2e)com' 

単一引用符は、文字列(あなたの問題を解決します)としてではbashの外観を作ります。

curl -g、--globoff {}と[]を使用してURLシーケンスと範囲を無効にする必要がありました。