Выберите пользователей в couchdb - PullRequest
3 голосов
/ 05 мая 2010

У меня есть HTML-форма для аутентификации пользователей, с языком SQL проще извлекать данные

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

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

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

Но это не рекомендуется ( Нажмите здесь ), что мне делать? (

Спасибо

1 Ответ

7 голосов
/ 05 мая 2010

Вот как я обычно это делаю ...

  1. Создайте свой дизайн документа и просмотра. Например, / _design / users / _views / byUserPass

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

    Функция (док)
    {
    if (doc.docType == "user")
    emit ([doc.username, doc.password], doc);
    }

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

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

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

Приветствие.

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