Фильтрация в CouchDB

1. besometr 10.04.18 16:03 Сейчас в теме
Доброго времени суток!

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

Суть проблемы проста, необходим запрос, который будет отбирать данные по условию:
function ( doc , req ) {
if (doc.Recipient.indexOf('ТС2') = -1) {
return false;
}
return true;
}

Значение 'ТС2' будет передаваться параметром, ну до этого еще предстоит добраться.
Итак, функция для фильтрации есть, как и куда ее записать в БД, не понятно, в новом интерфейсе Fauxton есть возможность добавить либо документ, либо представление. Сейчас эксперементирую с View, но до конца не уверен, что это верно.

Далее, пример из документации:
function(doc, req){
// we need only `mail` documents
if (doc.type != 'mail'){
return false;
}
// we're interested only in `new` ones
if (doc.status != 'new'){
return false;
}
return true; // passed!
}

и вызов:
GET /somedatabase/_changes?filter=mailbox/new_mail HTTP/1.1

от куда имя фильтра "mailbox/new_mail" берется, функция то без наименования?

Заранее спасибо за помощь.
По теме из базы знаний
Найденные решения
2. besometr 11.04.18 13:33 Сейчас в теме
В общем фильтры располагаются в отдельной группе в документе design, жаль только, что об этом забыли упомянуть в документации, а графический интерфейс отказывается создавать все кроме View. Выглядит так:

{
"_id": "_design/ED",
"_rev": "8-4ed33ecbc6e2c88fe1a3b55be0aaa5b3",
"Recipient": "",
"views": {
"vObjectJSON": {
"map": "function (doc) {\n if (doc.Recipient.indexOf('ТС3') != -1) {\n emit(doc._id, doc.ObjectJSON);\n }\n}"
}
},
"filters": {
"clientFilter": "function (doc, req) { \r\n if (! Array.isArray(doc.Recipient) ) {\r\n return false; \r\n }\r\n if (doc.Recipient.indexOf('ТС2') == -1) { \r\n return false; \r\n } \r\n return true; \r\n} ",
},
"language": "javascript"
}
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. besometr 11.04.18 13:33 Сейчас в теме
В общем фильтры располагаются в отдельной группе в документе design, жаль только, что об этом забыли упомянуть в документации, а графический интерфейс отказывается создавать все кроме View. Выглядит так:

{
"_id": "_design/ED",
"_rev": "8-4ed33ecbc6e2c88fe1a3b55be0aaa5b3",
"Recipient": "",
"views": {
"vObjectJSON": {
"map": "function (doc) {\n if (doc.Recipient.indexOf('ТС3') != -1) {\n emit(doc._id, doc.ObjectJSON);\n }\n}"
}
},
"filters": {
"clientFilter": "function (doc, req) { \r\n if (! Array.isArray(doc.Recipient) ) {\r\n return false; \r\n }\r\n if (doc.Recipient.indexOf('ТС2') == -1) { \r\n return false; \r\n } \r\n return true; \r\n} ",
},
"language": "javascript"
}
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот