2017-01-19 3 views
0

Я пытаюсь удалить базу данных CouchDB с именем:

supertest$my(2e)name(40)myhost(2e)co(2e)uk 

Имя базы данных создается автоматически пакете Superlogin Node.js поэтому у меня нет контроль за использованием $ в имени (это проблема, вызывающая проблему).

Если я попытаюсь удалить эту базу данных с помощью интерфейса администратора Fauxton, то нажатие на кнопку удаления ничего не делает. Я также попытался удалить с помощью API следующим образом:

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

Этот API вызов отклоняется с ошибкой:

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

Интерфейс Fauxton имеет несколько проблем с URI базы данных. Что касается прямого вызова API, вам нужно закодировать поле, которое я предполагаю. –

+0

У вас есть удаленный доступ к самому серверу? В худшем случае вы можете вручную удалить файл базы данных в '/ var/lib/couchdb'. –

+0

Вы также можете попробовать обернуть URL-адрес в одинарных кавычках для вашей команды 'curl', похоже, что она пытается сделать некоторую интерполяцию из-за' ''. –

ответ

1

Я столкнулся с проблемой сам, и в конечном итоге с помощью Superlogin API чтобы удалить пользователя и все свои базы данных с помощью

superlogin.removeUser(user_id, destroyDBs) 

проход true в качестве второго аргумента, чтобы удалить их собственной БД.

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

+0

Спасибо, Марк. Удалит ли это как локальный PouchDB, так и удаленный синхронизированный CouchDB или это просто повлияет на CouchDB? –

+0

Я не уверен, я использую PouchDB в узле почти как ORM для локально установленного экземпляра Couch. Я предполагаю, что он удалит из локального pouchDB, если это то, к чему вы создали экземпляр Superlogin. Вам может потребоваться вызвать ручную синхронизацию в вашей БД, чтобы отразить эти изменения на удаленном CouchDB, но опять же я не уверен в этом. – Mark

+0

Есть ли способ сделать removeUser через HTTP GET/PUT? –

3

следующие работы для меня:

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

Одиночные кавычки сделать Баш посмотреть на него в виде строки (решает проблему).

Curl -g, --globoff Отключить URL-последовательности и диапазоны, используя {} и [], необходимо, потому что время от времени у меня есть эти символы в моих паролях.