Я использую PouchDB в мобильном приложении для синхронизации экземпляра локальной базы данных с удаленным. Мне нужно добавить документ _security
в базу данных. Я попытался добавить _security
в локальную базу данных PouchDB, но он не позволяет добавлять/редактировать документы, начинающиеся с _ (проектные документы). Поскольку в локальной базе данных не нужен документ _security
, я думал, что могу просто добавить его в удаленную базу данных, отправив запрос HTTP PUT.
С Curl я могу добавить _security
документ с помощью этой команды:
curl -X PUT http://dbadmin:'password'@IP.ADDR:5984/databasename/_security -d '{"admins":{"names":["myuser"], "roles":[]}, "readers":{"names":[],"roles":["myreaders"]}}'
И это прекрасно работает. Есть что-то неправильно, хотя мой метод Angular $ http. Я использую этот код:
$http({
method: 'PUT',
url: "http://dbadmin:[email protected]:5984/databasename/_security",
data: JSON.stringify({_id: '_security', admins: {names: ['"' + userID + '"'], roles: []}, readers: {names: [], roles: ['"myreaders"']}})
});
И я получаю эту ошибку: Error: Access to restricted URI denied
Что я делаю неправильно? Как я могу это исправить?
Любые другие предложения о том, как написать документ security
, т. Е. Не использовать $ http, также приветствуются. Я взглянул на: https://github.com/pouchdb/pouchdb/issues/3529 и страницы, на которые он ссылается, но не смог найти решение, которое работает для меня. Я посмотрел на плагин pouchdb-security
, но предпочел бы не использовать плагин для написания документа _security
, а также не смог найти документацию о том, что плагин на странице проекта плагина (https://www.npmjs.com/package/pouchdb-security).
Я не думаю, что я делаю что-то неправильно. Если вы посмотрите на ссылку github, которую я опубликовал, была дискуссия только об этом. Разработчики PouchDB участвуют в этом обсуждении, и никто не упоминает об этом, что что-то не так с добавлением/добавлением документа _security. Я не предоставляю пользователям полные права администратора, почему вы предполагаете, что я это делаю? Я вхожу в качестве администратора для создания базы данных для пользователя (используя pouchdb-authentication [вы пишете это?). Я также не думаю, что это проблема CORS, потому что я установил плагин CORS CouchDB и отключил синхронизацию базы данных безопасности (администратора). – user473453
Извините, я перечитал вопрос Github, и да, я написал pouchdb-аутентификацию. Разговор в этом выпуске состоял в том, что сам PouchDB не позволяет вам размещать документ _security, а обсуждение с разработчиками заключалось в том, следует ли предоставлять общую обертку AJAX ('db.request'), что мы и делаем сейчас, хотя мы называем это [extras/api] (http://pouchdb.com/api.html#extras). В общем, вы можете использовать любой метод AJAX (например, '$ http') для достижения того, что вы хотите.Я по-прежнему не рекомендую его, потому что да, вам нужны права администратора для установки документа '_security'. – nlawson