Временный просмотр работает, /mydb/_design/mydesigndoc/_view/myview - нет. Зачем?

Привет!

Новое в веб-разработке в целом, в частности, couchdb.

Прямо сейчас я пытаюсь понять, как называть взгляды. У меня есть довольно простые документы, сгенерированные и отправленные в мою базу данных через приложение, основанное на простейшей возможной форме, найденной на Kan.so, и я опробую различные представления в Futon. Все хорошо. Затем я пытаюсь создать представление в дизайн-документе и вызывать его из кода. Но безрезультатно.

Даже такое простое представление, как следующее, дает правильное представление во временном представлении:

function(doc) {
if (doc.type == 'person') {
    emit(doc._id, doc);
   }
};

Но положить в lib/views.js -файл, как это (только exports.map_type = добавлено):

exports.map_type = function(doc) {
if (doc.type == 'person') {
    emit(doc._id, doc);
   }
};

не будет работать при вызове даже из поля адреса в браузере, например:

http://localhost:5984/simplestpossibleform/_design/my_form/_view/map_type

и результаты следующие:

{"error":"unknown_error","reason":"function_clause"}

Итак, что-то не так в предложении функции. Ну, я не вижу этого. Код копируется из временного представления Futons. И когда я пробую вид из выпадающего списка, он дает сбой при выполнении вырезки и вставки из документа дизайна во временный вид в Futon, что работает отлично. Может быть, что-то не так, просто не могу понять это.

Кто-нибудь может мне помочь, пожалуйста?

(Работает на couchdb 1.2, Kanso 0.3.1)

1 ответ

Я снова ответил на свой вопрос. И это было довольно элементарно, опять же.

Итак, если я хочу, чтобы couchdb viewчто-то для меня, я должен сказать, является ли это вопросом map или же reduce, Я не Вот простое (и смущающее) решение:

exports.map_type = {
map: function(doc) {
    if (doc.type == 'person') {
        emit(doc._id, doc);
    }
  }
};

В любом случае, я учился на своем заблуждении. Я надеюсь, что кто-то еще может использовать мои болтовни тоже..

Другие вопросы по тегам