Node.js MySQL データ取得
1. テーブルからのデータ選択
MySQLのテーブルからデータをセレクト(選択)するには、SELECT ステートメントを使用します。
1.1 全レコードの取得例
以下のコードは、「customers」テーブルから全てのレコードを取得し、返却された結果オブジェクトを表示する例です。
let mysql = require('mysql');
// データベース接続設定
let con = mysql.createConnection({
host: "localhost",
user: "ユーザー名",
password: "パスワード",
database: "mydb"
});
con.connect(function(err) {
if (err) throw err;
// 全てのカラムを取得
con.query("SELECT * FROM customers", function (err, result, fields) {
if (err) throw err;
console.log(result);
});
});SELECT * を使用すると、全てのカラムが返されます。
上記の内容を demo_db_select.js というファイル名で保存し、実行してください。
demo_db_select.js の実行
C:\Users\Your Name>node demo_db_select.js実行すると、以下のような結果が得られます。
[
{ id: 1, name: 'John', address: 'Highway 71'},
{ id: 2, name: 'Peter', address: 'Lowstreet 4'},
{ id: 3, name: 'Amy', address: 'Apple st 652'},
...
]2. カラムの選択
テーブル内の特定のカラムのみを取得したい場合は、SELECT ステートメントの後にカラム名を指定します。
2.1 特定カラムの抽出例
「customers」テーブルから name と address カラムのみを取得する例です。
let mysql = require('mysql');
let con = mysql.createConnection({
host: "localhost",
user: "ユーザー名",
password: "パスワード",
database: "mydb"
});
con.connect(function(err) {
if (err) throw err;
// カラム名を指定してクエリを実行
con.query("SELECT name, address FROM customers", function (err, result, fields) {
if (err) throw err;
console.log(result);
});
});demo_db_select2.js の実行
C:\Users\Your Name>node demo_db_select2.js結果は以下のようになります。
[
{ name: 'John', address: 'Highway 71'},
{ name: 'Peter', address: 'Lowstreet 4'},
...
]3. 結果オブジェクト (Result Object)
上記の例からも分かる通り、結果オブジェクト(result)は、各レコードを一つのオブジェクトとして格納した アレイ(配列) 形式で返されます。
例えば、3番目のレコードの address を取得したい場合は、以下のようにアレイのインデックスとプロパティを指定します。
例:3番目のレコードの住所を表示
console.log(result[2].address);出力結果:
Apple st 6524. Fieldsオブジェクト
コールバック関数の第3引数である fields は、結果に含まれる各フィールド(カラム)に関するメタデータを含むアレイです。
4.1 フィールド情報の表示例
let mysql = require('mysql');
let con = mysql.createConnection({
host: "localhost",
user: "ユーザー名",
password: "パスワード",
database: "mydb"
});
con.connect(function(err) {
if (err) throw err;
con.query("SELECT name, address FROM customers", function (err, result, fields) {
if (err) throw err;
// フィールド情報を表示
console.log(fields);
});
});demo_db_select_fields.js の実行
C:\Users\Your Name>node demo_db_select_fields.js結果には、以下のような詳細な情報が含まれます。
[
{
catalog: 'def',
db: 'mydb',
table: 'customers',
name: 'name',
type: 253,
...
},
{
catalog: 'def',
db: 'mydb',
table: 'customers',
name: 'address',
type: 253,
...
}
]このオブジェクトから特定の情報を抽出することも容易です。例えば、2番目のフィールド名を取得するには以下のように記述します。
例:2番目のフィールド名を表示
console.log(fields[1].name);出力結果:
address