2

取得したいドキュメントのキーのリストを指定して、Couchdbwith POST メソッドに ajax リクエストを送信します。

オフセットが最後の行に設定されているため、0行を取得するという事実を除いて、すべて正常に機能しているようです。

つまり、次のことを意味します。

  1. 私はcouchdbサーバー(cloudant)とうまく通信しています
  2. POSTメソッドが機能します
  3. リストを取得するように見えますが、最後の要素のオフセット、つまり空のリストを指定するだけです

また、結果を別の順序で並べようとしても成功しませんでした。

riListvar は次のようなものです (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 開発者ツールの出力

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

chrome devtools の出力でわかるように、オフセットは 194 であるため、最後のキーから始まるため、0 行の配列があります。

何か案が?

4

1 に答える 1

2

バグを見つけたとき、この質問を削除したくなりました。

しかし、最終的に私はそれを許し、何が間違っていたのかを説明することにしました.

削除する必要があると思われる場合は、これを動機付けてください。削除します。

したがって、私の質問に対する答えは非常に簡単です。取得していたキーは、"keys"パラメーターで選択していたキーではありませんでした。

エラーは実際にmap私が書いた関数にありました:

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

それ以外の

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

したがって、教訓は次のとおりです。

配列の長さに等しいオフセットを取得したら、結果が実際に map 関数で取得したいものかどうかを確認します。

于 2012-06-07T10:18:13.437 に答える