我在使用通配符搜索时遇到了一些麻烦。
我的理解是我可以使用空对象{}
作为通配符来返回所有匹配。
我已经看到了一些关于此问题的其他问题,他们似乎都说了同样的话。最引人注目的是this one。
为简单起见,我试图使用一个视图来搜索多种可能性。正如您在下面的代码中看到的那样,我保证填写的唯一项目是start
和end
,其他所有内容都可能为空。如果它是空白的,我试图使用通配符来匹配任何东西。这使我有可能通过name
和obj1
,或仅obj4
,或obj2
和obj3
等进行搜索。
我的搜索,使用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
是空的。
当名称是实际名称时,它会正确返回找到的行,因此我知道该视图有效。
以下是视图:(deleted
和doc
是文档中的字段)
function(docu){
if(!docu.deleted){
if(docu.doc == "DOCTYPEHERE"){
emit([docu.name], docu);
}
}
}
我的问题是:
startkey
和endkey
{}
sudo apt install default-jre
时,为什么这个通配符不适合我?