2010-05-04 6 views
3

У меня есть формы HTML для аутентификации пользователей, с языком SQL легче извлекать данныеВыбор пользователей в CouchDB

select name, password from users where name='nameField' and password='passwordField' 

В CouchDB я не могу использовать локальные виды всего просмотров TEMP:

 
curl -X POST -H 'Content-Type: application/json' -d '{"map": "function (doc) {if (doc.name === "nameField" && doc.password === "passwordField") {emit (doc.name, doc.passWord)}}"}' http://localhost:5984/somedb/_temp_view 

Но это не рекомендуется (Click here), что мне делать? :(

Благодаря

ответ

7

Это, как я обычно это сделать ...

  1. Создайте свой дизайн док и вид. Исх.,/_design/пользователей/_views/byUserPass

  2. Ваша функция карты может выглядеть следующим образом (без снижения функции):

    функции (док)
    {
       , если (doc.docType == "пользователь")
            Испустите ([doc.username, doc.password], док);
    }

  3. Тогда я могу запросить так: http://localhost:5984/somedb/_design/users/_views/byUserPass?key=["exampleUsername", "examplePassword"]

  4. Если я получаю возвращенный ряд, то учетные данные были правильными. В качестве бонуса я также получаю всю информацию пользователя. Теперь я могу обновить их сеанс (например, поместить их идентификатор пользователя в сеанс) или документ (например, обновить «при последнем входе в систему») без необходимости дополнительного вызова CouchDB для их информации.

Если вы не хотите, чтобы обновить что-нибудь, а затем возвращает значение NULL: emit([doc.username, doc.password], null); - это не приведет к снижению потребления пропускной способности, а также, как и вы больше не передавая весь документ обратно.

Cheers.

+0

Это очень помогло мне, я очень благодарен вам =) – Caio

+0

Удивительный, рад это слышать! :-) –

Смежные вопросы