Материализованные представления в PouchDB - PullRequest
0 голосов
/ 25 января 2019

Есть ли способ создания материализованных представлений в PouchDB?Я хочу этого, потому что данные почти статичны, но пользователь делает запросы довольно часто.

1 Ответ

0 голосов
/ 27 января 2019

Там тихо, как материализованный взгляд. Вы изменяете данные, пользователь выполняет запрос, PouchDB работает с индексами, после первого «индексирования» все работает как материализованное представление, проиндексированное в памяти, пока что-то не изменится, и мы не обновим индексацию при следующем запросе. Снова и снова.

https://pouchdb.com/guides/queries.html

Постоянные запросы Постоянные запросы намного быстрее и являются предполагаемый способ использования API query () в ваших производственных приложениях. Использовать постоянные запросы, есть два шага.

Сначала вы создаете проектный документ, который описывает функцию карты Вы хотели бы использовать:

// document that tells PouchDB/CouchDB
// to build up an index on doc.name

var ddoc = {
  _id: '_design/my_index',
  views: {
    by_name: {
      map: function (doc) { emit(doc.name); }.toString()
    }
  }
};
// save it
pouch.put(ddoc).then(function () {
  // success!
}).catch(function (err) {
  // some error (maybe a 409, because it already exists?)
});

Затем вы фактически запрашиваете его, используя имя, которое вы дали проектному документу при его сохранении:

db.query('my_index/by_name').then(function (res) {
  // got the query results
}).catch(function (err) {
  // some error
});

Обратите внимание, что при первом запросе он будет довольно медленным, поскольку индекс не создается до тех пор, пока вы не запросите его. Чтобы обойти это, вы можете выполнить пустой запрос, чтобы запустить новую сборку:

db.query('my_index/by_name', {
  limit: 0 // don't return any results
}).then(function (res) {
  // index was built!
}).catch(function (err) {
  // some error
});

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...