Временный просмотр работает, /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);
}
}
};
В любом случае, я учился на своем заблуждении. Я надеюсь, что кто-то еще может использовать мои болтовни тоже..