2010-05-04 10 views
3

j'ai un formulaire HTML pour l'authentification des utilisateurs, avec le langage SQL est plus facile d'extraire des donnéesutilisateurs Sélectionnez dans CouchDB

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

Dans CouchDB Je ne peux pas utiliser des vues locales seulement vues temporaires:

 
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 

Mais ce n'est pas recommandé (Click here), que dois-je faire? :(

Merci

Répondre

7

Voilà comment j'aime habituellement faire ...

  1. Créer votre conception doc et vue. Ex.,/_design/utilisateurs/_views/byUserPass

  2. Votre fonction carte pourrait ressembler à ceci (réduire pas de fonction):

    fonction

    (doc)
    {
        si (doc.docType == "user")
            Emit ([doc.username, doc.password], doc);
    }

  3. Je peux requête comme ceci: http://localhost:5984/somedb/_design/users/_views/byUserPass?key=["exampleUsername", "examplePassword"]

  4. Si je reçois une ligne retournée, puis les informations d'identification étaient correctes. En prime, je reçois également toutes les informations de l'utilisateur. Maintenant, je peux mettre à jour leur session (ex., Mettre leur ID utilisateur dans la session) ou le document (ex., Mise à jour "lors de la dernière connexion") sans avoir à faire un appel supplémentaire à CouchDB pour leur information.

Si vous ne voulez pas mettre à jour quoi que ce soit, puis retourne une valeur null: emit([doc.username, doc.password], null); - cela réduira la consommation de bande passante et, comme vous n'êtes plus repassant toute la doc.

Cheers.

+0

Cela m'a beaucoup aidé Je vous suis très reconnaissant =) – Caio

+0

Génial, heureux d'entendre ça! :-) –