通配符CouchDB搜索

时间:2016-12-21 15:55:12

标签: javascript jquery couchdb

我在使用通配符搜索时遇到了一些麻烦。

我的理解是我可以使用空对象{}作为通配符来返回所有匹配。

我已经看到了一些关于此问题的其他问题,他们似乎都说了同样的话。最引人注目的是this one

为简单起见,我试图使用一个视图来搜索多种可能性。正如您在下面的代码中看到的那样,我保证填写的唯一项目是startend,其他所有内容都可能为空。如果它是空白的,我试图使用通配符来匹配任何东西。这使我有可能通过nameobj1,或仅obj4,或obj2obj3等进行搜索。

我的搜索,使用CouchDB jQuery插件是这样的:

function getHistory(db, name, start, end, obj1, obj2, obj3, obj4){
  $.couch.db(db).view("path/to/view", {
    //startkey: [name, start, obj1, obj2, obj3, obj4],
    //endkey: [name, end, obj1, obj2, obj3, obj4],
    startkey: [name],
    endkey: [name],
    success: function(data) {
console.log(data);
    },
    error: function(status) {
        console.log(status);
    },
    reduce: false
  });
}

评论中的代码是我想要搜索的内容。不在注释中的代码是我尝试使用通配符。

无论出于何种原因,只要name{},它就不会返回任何内容。当我说退货时,我的意思是data.rows是空的。

当名称是实际名称时,它会正确返回找到的行,因此我知道该视图有效。

以下是视图:(deleteddoc是文档中的字段)

function(docu){
  if(!docu.deleted){
    if(docu.doc == "DOCTYPEHERE"){
      emit([docu.name], docu);
    }
  }
}

我的问题是:

  • startkeyendkey {} sudo apt install default-jre 时,为什么这个通配符不适合我?
  • 我是否遗漏了使用通配符的一些基本知识?

0 个答案:

没有答案