pouchdb将无法正确使用索引

时间:2019-01-23 02:44:47

标签: pouchdb

无论何时我尝试通过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']
  }
});

从这里开始,任何与得分有关的查询都将不返回任何内容。

如果我尝试对结果(不存在)进行实际排序(这确实是使用索引的全部内容),那么它会告诉我在使用默认索引时无法按分数排序。

// 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页面上的示例,但是似乎没有任何实际作用。

0 个答案:

没有答案