質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Express

ExpressはNode.jsのWebアプリケーションフレームワークです。 マルチページを構築するための機能セットおよびハイブリッドのWebアプリケーションを提供します。

Q&A

0回答

766閲覧

node.js express bcrypt.compareがtrueを返してもif文が処理されない

k_ta2g

総合スコア0

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Express

ExpressはNode.jsのWebアプリケーションフレームワークです。 マルチページを構築するための機能セットおよびハイブリッドのWebアプリケーションを提供します。

0グッド

0クリップ

投稿2021/05/08 10:19

前提・実現したいこと

node.js express でbcrypt.compareを使いログインの機能を実装

発生している問題・エラーメッセージ

trueの処理に行かず、elseの処理になってしまう

エラーメッセージ

該当のソースコード

node.js

1router.post("/login", (req, res) => { 2 connection.query( 3 "select * from users where name = ?", 4 [req.body.userName], 5 (error, results) => { 6 const isEqual = bcrypt.compare(req.body.password, results[0].password, 7 (error, isEqual) => { 8 console.log(isEqual); 9 return isEqual; 10 } 11 ); 12 if (results.length > 0 && isEqual) { 13 req.session.userId = results[0].id; 14 req.session.userName = results[0].name; 15 res.flash("message", "ログインしました"); 16 res.redirect(`/index/${results[0].id}`); 17 } else { 18 res.flash("message", "ログインに失敗しました"); 19 res.flash("userName", req.body.userName); 20 res.redirect("/users/login"); 21 } 22 } 23 ); 24});

試したこと

isEqualを消し、result.length > 0 だけでif文を書くとtrueの処理に進んだ。
console.logでisEqualの値はtrueになっている事は確認している。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hoshi-takanori

2021/05/08 12:47

bcrypt.compare も非同期なので、その後の処理は引数のクロージャの中で処理する必要があります。 または、async/await を使った方がすっきり書けると思います。
k_ta2g

2021/05/09 12:11

ありがとうございます。最初のifの条件を&&ではなく、引数の中で新たにif文を作ったら思い通りに処理が出来ました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問