前提・実現したいこと
node.jsを使用してSQL Serverから値を取得する。
初期画面にてIDとパスワードを入力するとDBに接続し、
パスワードが正しいかを確認し、正しい場合は「homepage」に接続する。
パスワードが誤りの場合は、「パスワードが不正です」と表示させる。
発生している問題・エラーメッセージ
Requests can only be made in the LoggedIn state, not the Initialized state
該当のソースコード
javascript
1 // SQL処理 2 var connection = new tedious.Connection(config); 3 var content = []; // DBからselectした結果を格納する変数 4 5 connection.on('connect', function(err1) { 6 if (err1) { 7 console.log("-> error (" + err1 + ")"); 8 } else { 9 10 //var TYPES = require('tedious').TYPES; 11 var Request = require('tedious').Request; 12 var sql="select count(*) as id from t_table1 where id='" + xx + "'"; 13 console.log('->sql' + sql); 14 var request = new Request(sql, function(err2) { 15 if (err2) { 16 console.log("-> err2 (" + err2 + ")"); 17 // 接続を解除 18 connection.close(); 19 20 var data = { 21 content: 'IDまたはパスワードが異なっています。正しく入力して下さい。3', 22 disabled : "", 23 color : "red" 24 }; 25 res.render('login',data); 26 } else { 27 console.log("-> requestCompleted"); 28 // 接続を解除 29 connection.close(); 30 } 31 }); 32 var result = {}; 33 34 // 出力取り出し 35 request.on('row', function(columns) { 36 columns.forEach(function(column) { 37 if (column.value === null) { 38 console.log('NULL'); 39 } else { 40 result[column.metadata.colName] = column.value; 41 } 42 }); 43 content.push(result); 44 result = {}; 45 }); 46 47 // DB接続を終了した際のイベントハンドラ 48 // DB接続を切断した後に画面を描写する 49 connection.on('end', function () { 50 content.forEach(function(value) { 51 console.log('->id='+value.id); 52 }); 53 console.log("disconnected"); 54 55 if (content[0].id > 0) { 56 57 connection.on('connect', function(err3) { 58 if (err3) { 59 console.log("-> error (" + err3 + ")"); 60 } else { 61 62 console.log('->error_null'); 63 64 // SQL処理 65 var connection = new tedious.Connection(config); 66 var content2 = []; // DBからselectした結果を格納する変数 67 68 var Request = require('tedious').Request; 69 70 var sql2="select password from t_table1 where id='"+xx+"'"; 71 console.log('->sql2' + sql2); 72 73 var request2 = new Request(sql2, function(err4) { 74 if (err4) { 75 console.log("-> err4 (" + err4 + ")"); 76 // 接続を解除 77 connection.close(); 78 79 var data = { 80 content: 'IDが異なっています。正しく入力して下さい。1', 81 disabled : "", 82 color : "red" 83 }; 84 res.render('login',data); 85 } else { 86 console.log("-> request2Completed"); 87 // 接続を解除 88 connection.close(); 89 } 90 }); 91 var result2 = {}; 92 93 // 出力取り出し 94 request2.on('row', function(columns2) { 95 columns2.forEach(function(column2) { 96 if (column2.value === null) { 97 console.log('NULL'); 98 } else { 99 result2[column.metadata.colName] = column2.value; 100 } 101 }); 102 content2.push(result2); 103 result2 = {}; 104 }); 105 106 // DB接続を終了した際のイベントハンドラ 107 // DB接続を切断した後に画面を描写する 108 connection.on('end', function () { 109 content2.forEach(function(value) { 110 console.log('connection_end2'); 111 }); 112 console.log("disconnected"); 113 var dbpw = content2[0].password; 114 115 console.log('->dbpw'+ dbpw); 116 117 if (pw == dbpw) { 118 119 //入力内容とDBのデータが一致した場合 120 res.redirect('/homepage'); 121 122 } else { 123 var data = { 124 //パスワード入力ミス 125 content: 'パスワードが不正です。', 126 disabled : '', 127 color : "red" 128 }; 129 res.render('login',data); 130 } 131 132 }); 133 134 //SQL実行 135 connection.execSql(request2); 136 137 } 138 }); 139 140 } else { 141 var data = { 142 //該当IDが見つからない場合 143 content: 'idが不正です。', 144 disabled : "", 145 color : "red" 146 }; 147 res.render('login',data); 148 connection.end(); 149 } 150 }); 151 152 //SQL実行 153 connection.execSql(request); 154 155 156 } 157 }); 158
試したこと
構文に誤りがないかチェックはしました。
補足情報(FW/ツールのバージョンなど)
VisualStudioCodeを使用し、IE11で表示させてます。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。