Как получить результат CouchDB _list с помощью Cradle

В Node, используя Express и Cradle, у меня есть вызов _list, который не работает. Другие вызовы идут в _view и работают нормально. В документации Cradle нет раздела о _list, но, похоже, он взят из данный файл GitHub, который должен работать так же, как _view.

Мой код выглядит так:

if(isList){
    db.list(couch_url, function (err, res) {
        if(err){
            console.log("error couchdb list", err);
        }else{
            //console.log(res);
            callback(JSON.stringify(res));
        }
    });     
}

Переменная couch_url представляет собой обычный http-запрос и выглядит так: myCouch/_design/Model3D/_list/convert/All за исключением того, что указатели пути (_design, _view, _list) были удалены, чтобы получить Model3D/convert/All для Cradle (похоже, что они возвращены в функцию Cradle). Этот полный путь, представленный couch_url, будет работать в других подключениях CouchDB, и, как я уже сказал, функция представления Cradle работает нормально.

Объект ошибки, который я получаю:

{ stack: [Getter/Setter],
    arguments: [ 'ILLEGAL' ],
    type: 'unexpected_token',
    message: [Getter/Setter] }

person KTys    schedule 30.07.2011    source источник


Ответы (2)


Проверьте используемую вами функцию списка — скорее всего, она выдает неверный JSON. В моем случае я получал результат «неопределенный» для свойства. Все, что не определено, должно быть удалено, а все имена свойств должны быть заключены в кавычки.

person David Swift    schedule 14.10.2011

Я пытался воспроизвести это, но, похоже, это работает для меня. Просто двойная проверка - это "преобразовать" вашу функцию списка и "Все" ваше имя представления?

Единственное другое предостережение, которое я вижу, это то, что в имени вашей базы данных есть символ заглавной буквы. Базы данных CouchDB должны быть все в нижнем регистре.

person Jan Lehnardt    schedule 01.09.2011
comment
Ян, можете ли вы дать мне версии Couchdb и Cradle, которые вы успешно использовали? Может быть какое-то правило о капитализации, но все мои другие вызовы, связанные с CouchDB, прекрасно работают с этим именем базы данных, поэтому трудно поверить, что это испортит только функцию _list... - person KTys; 10.09.2011
comment
Кроме того, имена указаны в правильном порядке в Couchdb — я знаю это, потому что, если я использую любой из нескольких других маршрутов, отличных от Cradle (perl, curl), он работает. - person KTys; 10.09.2011