実現したいこと
JavaScript
1console.log( 2 m_sql( 3 "SELECT * FROM accounts WHERE user=?;", ["Jhon"] 4 ).results[0].mail_address 5);
みたいな感じに、Node.jsでSQL文をm_sql()
関数に渡し、SQL文の実行結果をm_sql()
関数の戻り値として受け取る。
このm_sql()
関数を作りたい。
つまずいてる場所
JavaScript
1const mysql = require("mysql"); 2 3const connection = mysql.createConnection({ 4 host: "localhost", 5 user: "root", 6 password: "toor", 7 database: "test" 8}); 9 10/*=============================================================*/ 11 12function m_sql (code, argv) { 13 var ret; 14 15 new Promise((resolve, reject) => { 16 // connection.query は非同期関数なので、Promise を使っています。 17 connection.query(code, argv, 18 (error, results, fields) => { 19 resolve({ 20 error: error, 21 results: results, 22 fields: fields 23 }); 24 } 25 ); 26 27 }).then(data => { 28 ret = data; 29 30 console.log(data); 31 //=> SQL文の実行結果 32 33 console.log(ret); 34 //=> SQL文の実行結果 35 36 //ここでは無事、retにSQL文の実行結果が入っていますが、 37 }); 38 //ここではretがundefinedになっています 39 40 console.log(ret); 41 //=> undefined 42 43 return ret; 44} 45 46console.log(m_sql("SELECT * FROM auth;")); 47//=> undefined
知りたいこと
- どうやったら、
ret
が SQL文の実行結果を保持したまま、return
出来るのか。
調べたこと・試したこと
- 参照渡し
JavaScript の参照渡しはややこしいし、やってもできなかった。
参照渡しは存在しないという記事も。
環境・バージョン
- OS Windows 10 Home 64bit
- Node.js v12.16.1
- SQL 10.5.5-MariaDB
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/11/16 09:12