PouchDB для выполнения запросов на CouchDB

Я разрабатываю приложение с PhoneGap и JQM. Я также буду использовать PouchDB в качестве базы данных на стороне устройства в сочетании с CouchDB в качестве базы данных на стороне сервера.

Я хотел бы знать, можно ли использовать PouchDB для отправки запроса в CouchDB. Например, я хочу иметь механизм входа в систему. Поэтому мне нужно проверить учетные данные на стороне сервера. Моя первая идея — отправить ajax-запрос в файл PHP, который проверит учетные данные в базе данных CouchDB. Я бы сделал то же самое для регистрации: отправил данные в PHP через Ajax, чтобы создать новую запись в базе данных моего сервера.

Однако, поскольку PouchDB и CouchDB очень близки, возможно, для этого можно не использовать запрос ajax и файл PHP. Возможно, можно отправлять запросы (чтение и запись) в CouchDB из PouchDB. Является ли это возможным?

Спасибо.


person DescampsAu    schedule 30.12.2014    source источник


Ответы (1)


Вы можете использовать PouchDb в качестве драйвера CouchDb.

var db = new PouchDB('https://myserver:5984/mdb');
// this gives you the PouchDB API but it will request data from the CouchDb Server

Существует плагин pouchdb, который предоставляет некоторые методы аутентификации для API pouchdb:

var db = new PouchDB('http://mysite:5984/mydb');
db.login('batman', 'brucewayne').then(function (batman) {
  console.log("I'm Batman.");
  return db.logout();
});

Вот методы, которые он смешивает:

  • зарегистрироваться
  • авторизоваться
  • выйти
  • получить сеанс
  • получитьпользователя

Чтобы предотвратить появление модальных диалогов базовой HTTP-аутентификации в браузере старых времен, мы должны быть осторожны в том, как мы используем PouchDB. Чтобы предотвратить ложный неаутентифицированный запрос к CouchDB (используется для проверки существования удаленной БД), передайте skipSetup: true в параметрах конструктора Pouch. Во-вторых, чтобы аутентифицировать запрос относительно _session, добавьте базовый заголовок авторизации HTTP в параметры AJAX db.login().

var user = {
  name: 'admin',
  password: 'admin'
};

var pouchOpts = {
  skipSetup: true
};

var ajaxOpts = {
  ajax: {
    headers: {
      Authorization: 'Basic ' + window.btoa(user.name + ':' + user.password)
    }
  }
};

var db = new PouchDB('http://localhost:5984/test', pouchOpts);

db.login(user.name, user.password, ajaxOpts).then(function() {
  return db.allDocs();
}).then(function(docs) {
  console.log(docs);
}).catch(function(error) {
  console.error(error);
});
person twilson63    schedule 13.01.2015