2017-12-23 11 views
-1

私はコードを覚えており、Expressを使ってノードにWebアプリケーションを構築しようとしています(私は正しい言い方だと思います)。psqlテーブルをループしてユーザログの電子メールとパスワードを確認する

user_id、電子メール、パスワードを格納するpostgresqlにテーブル( 'users')があります。

ユーザーがウェブサイトにログインするときに、テーブルをループして電子メールが存在し、パスワードと一致することを確認してからログインでき、ログインしているときに一意のuser_idが割り当てられます。可能であればknexを組み込みたいと思います。

私はこれを行う方法を忘れていますし、ヒント/正しい方向を指していることを感謝します。あなたが戻って取得結果はuser_idのか、何でもあなたが返され、その後、ユーザが存在する必要が含まれている場合は

おかげ

+0

これは単純なSELECTクエリです。何を試しましたか、どの問題が直面していますか? –

答えて

0

は、基本的な何か最初

SELECT 
    user_id 
    FROM users 
    WHERE 
    email = _your_user_email 
    AND password = _your_user_password; 

を試してみてください。これをさらに拡大するには、電子メールをチェックして、電子メールは存在するがパスワードは間違っていることをユーザーに知らせます。まず、簡単な方法を試して、これがあなたの必要性を満たしているかどうかを確認します。

0

まず、idフィールドのusersテーブルの名前をidとすることをおすすめします。 それは<tablename>_id (ITERとclothes.user_id用などのテーブルclothes.id一意の識別子。 - テーブルusersへの外部キー)などididなどのフィールドと参照列に名前を付けることをお勧めします。

第2に、パスワードをデータベースの生データとして保存すること(セキュリティ上の理由)をお勧めします。NOT ユーザーパスワードをハッシュデータとして保持するのが一般的です。 たとえば、bcryptパッケージを見てください。

ユーザーを選択するには(「ループ」のようなものがデータベースの面ではありません、それは「クエリ」と呼ばれている)あなたが に必要knexの面では

select 
    id, 
    email, 
    <any_other_field_you_need> 
from 
    users 
where 
    email = '[email protected]' 
    and password = 'your password hash' 

のようなクエリを作成することができますあなたは急行bodyから取得することができます

knex('users') 
    .select(['id', 'email', '<any_other_field_you_need>']) 
    .where('email', '[email protected]') 
    .where('password', 'your password hash') 

あなたのクエリのparams(電子メール、パスワードを)書かれます。 POST HTTPメソッドを使用してリクエストを送信し、データを本体として渡していることを確認してください。

あなたがexpressを知らない場合、それはnpm packageです。 Webサービスの作成に役立ちます。彼らは彼らの 公式サイトにこんにちはの世界guideを持っています。どうかチェックしてみてください。または単にGoogleの "初心者のためのチュートリアルを表現する"それについてのインターネット上の偉大なチュートリアルがたくさんあります。それは非常に人気があります。

関連する問題