couchdb偏移:我没有结果

时间:2012-06-07 08:59:44

标签: couchdb

我向couchdb使用POST方法发出ajax请求,给出了我想要检索的文档的键列表。

除了我得到0行因为偏移量设置在最后一行之外,所有东西似乎都能正常工作。

所以这意味着:

  1. 我与couchdb服务器(cloudant)沟通良好
  2. POST方法有效
  3. 它似乎检索了列表,但只是给了它最后一个元素,即一个空列表
  4. 此外,尝试以不同方式排序结果并没有成功。

    riList var就是这样的(来自Google Chrome开发工具):

    keys: Array[194]
    0: "Wire line diamond core drilling rig"
    1: "VUA - isotope geochemistry laboratory"
    2: "Volcanologic and Seismological Observatories"
    3: "VESOG"
    4: "Utrecht University - TecLab, Tectonic Laboratory"
    5: "Utrecht University - Experimental and Analytical Laboratories"
    .....
    

    基本上与

    相同
    var riList=["Wire line diamond core drilling rig", "VUA - isotope geochemistry laboratory","Volcanologic and Seismological Observatories","VESOG","Utrecht University - TecLab, Tectonic Laboratory","Utrecht University - Experimental and Analytical Laboratories"];
    

    这是代码

                var riList= ListOfRU.pluck('ri_name');
                var queryParams={"keys":riList};
                var riResponseList=[];
                var ajaxURL= ('_view/'+ self.parentMcDropDownValue);
                console.log(ajaxURL, queryParams);
                $.ajax({ //retrieve and show on map LABORATORY coordinates
                    async: true, 
                    url: ajaxURL,
                    type:"POST",
                    data:JSON.stringify(queryParams),
                    dataType: 'json',
                    timeout:5000,
                    success:function(response){
                        console.log("response",response);
                        riResponseList=response.rows;
                        },
                    error:function(){
                        alert('fetching error');
                        }
                    });
    

    chrome developer tools输出

    response 
    Object
    offset: 194
    rows: Array[0]
    total_rows: 194
    __proto__: Object
    

    正如您在chrome devtools的输出中看到的那样,偏移量为194,因此我有一个包含0行的数组,因为它从最后一个键开始。

    有什么想法吗?

1 个答案:

答案 0 :(得分:2)

当我发现错误时,我很想删除这个问题。

但最后我决定放手并解释错误。

如果你觉得它应该被删除,请激励它,我会删除它。

所以我的问题的答案很简单:我检索的密钥不是我用"keys"参数选择的密钥。

错误确实存在于我写的map函数中:

//WRONG ONE!!
function(doc){
    if(doc.doctype=='ri'){
        emit(doc.ri, doc);
    }
}

INSTEAD OF

//RIGHT ONE!!
function(doc){
    if(doc.doctype=='ri'){
        emit(doc.ri_name, doc);// RI_NAME INSTEAD OF RI!!!!!
    }
}

所以教训是:

当你得到一个等于数组长度的偏移量时,检查结果是否真的是你想用地图函数获得的结果。