Вы не можете создавать динамические представления в CouchDB.Вы могли бы использовать временные представления (см. Нижнюю часть этой страницы ), чтобы делать то, что вы пытаетесь сделать здесь, но, как известно, временные представления должны проходить через всю вашу базу данных для вычисления результатаТаким образом, у вас будет абсолютно ужасная производительность, и каждый ресурс CouchDB советует против этого.
Представления полезны для ответов на вопросы типа "какие данные соответствуют этому значению?"или "дать мне данные, отсортированные по этому значению".Они оптимизированы для этого, потому что функции map и сокращения не зависят от параметров запроса, поэтому они могут кэшироваться и постепенно обновляться.
Что вы пытаетесь сделать, это "какие данные соответствуют этому значению?"добрый, и так может быть сделано со статическим, постоянным представлением:
function(doc) {
if (doc.type == 'User') {
if (doc.email) emit(doc.email, null);
if (doc.login) emit(doc.login, null);
}
}
Это представление позволяет вам запрашивать любые документы, которые имеют адрес электронной почты или логин, равный определенному значению, так что вы просто запустите запрос сkey
адрес электронной почты / логин, который вы ищете