pouchdb не будет правильно использовать индексы - PullRequest
0 голосов
/ 23 января 2019

Всякий раз, когда я пытаюсь использовать индексы с pouchdb, будь то через код или через собственный HTTP-интерфейс, запросы больше никогда не работают.

Например, допустим, у меня есть 10 строк, содержащих имя и оценку:

db.put({_id: '0', name: 'name0', score: 10});
db.put({_id: '1', name: 'name1', score: 56});
...

Я могу мгновенно получить записи с именем, например, или с оценкой, соответствующей некоторым правилам, например:

let result = await db.find({
  selector: {
    score: {
      $gt: 20
    }
  }
});

Но это не позволяет мне сортировать,для этого нужен индекс:

await db.createIndex({
  index: {
    fields: ['score']
  }
});

И с этого момента любой запрос, связанный с счетом, просто ничего не возвращает.

Если я попытаюсь на самом деле отсортировать результаты (это неt существует), что действительно является смыслом использования индекса, тогда он говорит мне, что не может отсортировать по баллу при использовании индекса по умолчанию.

// Same DB, same index...
try {
  let result = await db.find({
    selector: {
      score: {
        $gt: 20
      }
    },
    sort: ['score']
  });

  console.log(result);
} catch (e) {
  console.log(e);
}

Результат:

{ error: 'bad_request',
  reason:
   'Cannot sort on field(s) "score" when using the default index',
  status: 400,
  name: 'bad_request',
  message:
   'Cannot sort on field(s) "score" when using the default index' }

Так что я должен спросить, я делаю что-то явно неправильно?потому что все, что я делал, это следовал примерам на странице pouchdb, и все же, похоже, на самом деле ничего не работает.

...