PouchDb 通过 Id 匹配正则表达式获取所有文档

syl*_*264 2 javascript pouchdb

我想获取 id 与正则表达式匹配的所有文档。

例如,我有以下文档 ID:

p0
p0/e0
p1
p1/e0
Run Code Online (Sandbox Code Playgroud)

我怎样才能只得到 p0 和 p1 ?正则表达式将是 /^p[0-9]+$/

目前我可以执行两个请求,但我只想使用一个:

This.db.allDocs({
    include_docs: false
}).then(function(result){

    // Find all ids matching /^p[0-9]+$/
    var iDoc = result.rows.length;
    while(iDoc--){
        if(result.rows[iDoc].id.match(/^p[0-9]+$/)){
            projectsIds.push(result.rows[iDoc].id);
        }
    }

    // Get all documents with ids matching /^p[0-9]+$/
    This.db.allDocs({
        include_docs: true,
        keys: projectsIds
    }).then(function(result) {
        var iProject = result.rows.length;
        var docs = [];
        while (iProject--) {
            docs[iProject] = result.rows[iProject].doc;
        }
        projects.resolve(docs);

    });

});
Run Code Online (Sandbox Code Playgroud)

Bha*_*ala 6

这可以通过前缀获取文档,例如

localDB.allDocs({
            include_docs: true,
            startkey: "p0",
            endkey: "p0\uffff"
        },...);
Run Code Online (Sandbox Code Playgroud)

上面的代码为您提供了 _id 以 p0 开头的所有文档。

参考链接 https://github.com/nolanlawson/pouchdb-quick-search#autosuggestions-and-prefix-search