Не работает составной ключ CouchDB / сопоставление представлений

#couchdb #collation #composite-key #couchapp

#couchdb #сопоставление #составной ключ #couchapp

Вопрос:

Я безуспешно пытаюсь воспользоваться преимуществами сопоставления представлений в CouchDB, не мог бы кто-нибудь, пожалуйста, проверить, что не так в моем случае?

Во-первых, я основываюсь на http://www.cmlenz.net/archives/2007/10/couchdb-joins

Затем я хочу реализовать дерево, связанное с помощью parent_id, например:

 |- Li
 |- test
  |- tester
  

который в CouchDB является:

 {"_id":"root","name":"Li","completed":true},
{"_id":"102ef7e2e99db3983a3bb60a490015db","parent_id":"root","name":"test","completed":false},
{"_id":"102ef7e2e99db3983a3bb60a4900209e","parent_id":"102ef7e2e99db3983a3bb60a490015db","name":"tester","completed":false}
  

Итак, у меня определено следующее представление:

 items : {
    map : function(doc){
        emit([doc._id, 0], doc);
        emit([doc.parent_id, 1], doc);
    }
}
  

И ожидаемый запрос для startKey=[«root»] возвращает только два корневых документа, и это только прямой потомок, но запрос возвращает все (удвоенные) документы, т. е. фильтрация по ключу у меня не работает.

В чем может быть проблема?

Вы можете увидеть базу данных по адресу http://yo.iriscouch.com/_utils/database.html?cats

Затем запрос http://yo.iriscouch.com/cats/_design/app/_view/items?startKey =[«root»] возвращает точно то же самое, что и без каких-либо аргументов, т. Е. похоже, что startKey игнорируется.

Я пробовал startKey = [«root», 0] amp; EndKey = [«root», 2] также безуспешно.

Спасибо.

Ответ №1:

Это ‘startkey’, а не ‘startKey’ (обратите внимание на регистр).

http://wiki.apache.org/couchdb/HTTP_view_API#Querying_Options

Комментарии:

1. Я говорил это не один раз, я хотел бы отдать вам больше одного голоса за это.