Query View не возвращает никаких значений в couchdb - PullRequest
0 голосов
/ 21 апреля 2011

У меня есть представление, определенное как:

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 строк - что я пропустил?

Ответы [ 2 ]

1 голос
/ 26 апреля 2011

Изменен код до

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()); 
}

и теперь работает нормально.

1 голос
/ 21 апреля 2011

Я подозреваю, что у вас есть несоответствие типов, но невозможно точно сказать, не видя строки представления.Поэтому, если я не прав, опубликуйте пример строки из вашего представления.

'keys' кодируется в JSON перед отправкой в ​​CouchDB.Вы добавляете две строки - "93" и "23" - но я предполагаю, что они на самом деле целые числа в документах.В JSON строка и целое число кодируются по-разному.Пара строк кодируется в ["93", "23"], а пара целых чисел кодируется в [93, 23].

Если я прав, «ключи» должны быть определены как список (или как это выглядит в Java).

...