Параметр ключа доступа в представлениях - PullRequest
0 голосов
/ 28 сентября 2010

Я хотел создать динамическое представление в couchdb, и я хотел бы спросить, как получить доступ к ключу параметра в представлении couch.как следует:

function(doc) {
    if ((doc['couchrest-type'] == 'User') && ((doc['email'] != null) || (doc['login'] != null ))) {
        if (doc['email'] == parameter[key]) {
            emit(doc['email'], doc);
        } else if (doc['login'] == parameter[key]) {
            emit(doc['login'], doc);
        }
    }
}

и в чем недостатки динамического просмотра в couchdb.и как добавить такие динамические виды в Couchrest Model.

Спасибо, Шенуда Бертель

1 Ответ

2 голосов
/ 13 октября 2010

Вы не можете создавать динамические представления в CouchDB.Вы могли бы использовать временные представления (см. Нижнюю часть этой страницы ), чтобы делать то, что вы пытаетесь сделать здесь, но, как известно, временные представления должны проходить через всю вашу базу данных для вычисления результатаТаким образом, у вас будет абсолютно ужасная производительность, и каждый ресурс CouchDB советует против этого.

Представления полезны для ответов на вопросы типа "какие данные соответствуют этому значению?"или "дать мне данные, отсортированные по этому значению".Они оптимизированы для этого, потому что функции map и сокращения не зависят от параметров запроса, поэтому они могут кэшироваться и постепенно обновляться.

Что вы пытаетесь сделать, это "какие данные соответствуют этому значению?"добрый, и так может быть сделано со статическим, постоянным представлением:

function(doc) {
    if (doc.type == 'User') {
        if (doc.email) emit(doc.email, null);
        if (doc.login) emit(doc.login, null);
    }
}

Это представление позволяет вам запрашивать любые документы, которые имеют адрес электронной почты или логин, равный определенному значению, так что вы просто запустите запрос сkey адрес электронной почты / логин, который вы ищете

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...