这是我的db.find():
db.createIndex({
index: {
fields: ['username', 'date'],
name: 'usernameDateIndex',
ddoc: "usernameDateIndex"
}
}).then(() => {
db.find({
selector: {
username: 'org.couchdb.user:' + name
},
sort: [{username: 'desc'}, {date:'desc'}],
use_index: 'usernameDateIndex'
}).then(result => {
// Works fine. I get what is expected
}).catch(error => {
});
}).catch(error => {
});
这很好,并返回一个包含六个文档的数组。然后我删除了一个这样的文档:
doc._deleted = true;
db.put(
doc
).then(response => {
// db.allDocs() returns 5 docs this is correct
// db.find() returns an empty array
}).catch(error => {
});
删除后,db.AllDocs()正常工作,但上面列出的相同db.createIndex和db.find()返回并清空数组。在没有db.createIndex()的删除之后我也尝试了db.find(),我仍然得到一个空数组,我没有错误。
我在这里错过了一步吗?删除后是否需要进行某种提交?我是否需要删除索引并再次创建它?我是否需要使用CouchDB远程服务器强制复制?不知道发生了什么。
最后一点,这是一个使用pouchdb-react-native和pouchdb-find软件包的React Native应用程序。它的后备存储是AsyncStorage。
答案 0 :(得分:-1)
根据答案的第2项,在this answer抓一个战利品:
- 在查询时,索引只能在其所有索引字段中使用 需要根据选择器存在。例如,如果你的 index包含字段A和B,但您只查询A,我们无法使用 索引因为它不包含包含A但不包含B的文档。
醇>
也许这就是你问题的原因。