前提・実現したいこと
Node.js + MySQLで開発を行ています。
DBに特定のIDが登録されているかどうかの値(bool型)を返す関数を作成したいと思っております。
(Node.js(JavaScript)での開発はこれが初めてとなります。)
発生している問題・エラーメッセージ
下記のコードでtrueになるような引数を与えてもfalseしか返ってきません。
該当のソースコード
修正1
javascript
1var http = require('http'); 2const mysql = require('mysql'); 3const connection = mysql.createConnection({ 4 host: '', 5 user: 'aaa', 6 password: 'bbb', 7 port: '3306' 8}); 9 10async function isRegistered(id) { 11 var result = false; 12 13 var query = `SELECT EXISTS (SELECT * FROM hoges WHERE id = '${id}') as result;`; 14 await connection.query(query, (err, rows, fields) => { 15 result = Boolean(rows[0].result); // ★3番目に呼ばれる 16 }); 17 18 return result; // ★1番目に呼ばれる 19} 20 21// 呼び出し元 22http.createServer(async function (req, res) { 23 if (req.method == 'POST') { 24 var result = awit isRegistered('hogehoge'); 25 console.log(result.resolve);// ★2番目に呼ばれる 26 } 27}).listen(8080);
試したこと
Node.jsの経験が浅いので断定できませんが、
非同期処理のため想定している値と別の値が返ってきてしまうのだと考えています。
(err, rows, fields) => {}の前にasyncなどを付けて試してみましたが、解決には至りませんでした。
解決策をご存知であれば、ご教授よろしくお願いいたします。
補足情報(FW/ツールのバージョンなど)
VisualStudio 2019
Node.js v12.18.3
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/12 23:10