NodeJS 速習チュートリアル

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」テーブルから nameaddress カラムのみを取得する例です。

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 652

4. 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