无论何时我尝试通过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页面上的示例,但是似乎没有任何实际作用。