0

次のように定義されたビューがあります。

function(doc) 
{ 
    if (doc.type="user")
    {
        emit([doc.uid, doc.groupid], null);
    } 
}

Javaコードで、私は書いた

List<String> keys = new ArrayList<String>();
keys.add("93");
keys.add("23");
ViewQuery q = createQuery("getProfileInfo").descending(true).keys(keys).includeDocs(true);
ViewResult vr = db.queryView(q);
List<Row> rows = vr.getRows();
for (Row row : rows) {
  System.out.println("Key--->"+row.getKey());
  System.out.println("Value--->"+key);
}

私のコードは常に 0 行を返します。

4

2 に答える 2

1

コードを次のように変更しました

ComplexKey keys = ComplexKey.of(“93”,”23”);
ViewQuery q = createQuery("getProfileInfo").descending(true).key(keys).includeDocs(true); 
ViewResult vr = db.queryView(q); 
List<Row> rows = vr.getRows(); 
for (Row row : rows) { 
  System.out.println("Key--->"+row.getKey()); 
  System.out.println("Value--->"+row.getValue()); 
}

そして今はうまくいきます。

于 2011-04-26T10:37:27.990 に答える
1

型の不一致があると思われますが、ビューの行を見ないと確実に判断することはできません。したがって、私が間違っている場合は、ビューの例の行を投稿してください。

「キー」は、CouchDB に送信される前に JSON にエンコードされます。「93」と「23」の 2 つの文字列を追加していますが、ドキュメントでは実際には整数であると推測しています。JSON では、文字列と整数のエンコード方法が異なります。文字列のペアは ["93", "23"] にエンコードされ、整数のペアは [93, 23] にエンコードされます。

私が正しければ、「キー」は List<Integer> として定義する必要があります (または Java では見えます)。

于 2011-04-21T16:25:15.743 に答える