node.jsでmysqlにデータを追加するメモ

環境

  • Node.js
  • nodejs
  • Node
  • JavaScript
  • JSON
  • package.json
  • MySQL
  • npm
  • さくらVPS

ディレクトリの状況

node.jsでmysqlを使う方法をメモっておきます。最小限です。下記はディレクトリの状況。サーバーはアパッチを使っています。


# pwd
/var/www/html/node_test_folder

# ls
node_modules  node_test.js  package.json

package.jsonを書く

node.jsの機能を拡張してnode.jsでmysqlを使えるようにします。package.jsonを下記のように書いてnpm installを実行すればディレクトリにnode_modulesが出来ます。これでnode.jsからmysqlを使うことができるようになります。

{
  "dependencies": {                                                               
    "mysql": "*" 
  }
}

mysqlのホストを確認

mysql> show variables like 'hostname';

node.jsからmysqlに接続するために僕のmysqlのhostを知りたくて、vpsに接続した状態でmysql -u root -pとかでmysqlに入った後に上記のコマンドを実行してさくらvpsのhostのようなものを取得出来たのですが、このコマンドで実行したものは外部からアクセスするためのもので、よくわかんないんですが、外部から僕のvpsのmysqlに接続できるための設定を書いてなかったのでエラーを吐きました。まあ、今回は、自分のvpsの中のnode.jsから接続するのでローカルで大丈夫。下記のコマンドで127.0.0.1を確認してください。

mysql> select host from mysql.user;
+-------------------+
| host              |
+-------------------+
| 127.0.0.1         |
| ::1               |

接続

# vi node_test.js

var mysql      = require('mysql');
var connection = mysql.createConnection({


host: process.env.DB_HOST || '127.0.0.1',
user: process.env.DB_USER || 'ユーザー名',
password: process.env.DB_PASS || 'パスワード',
database: process.env.DB_NAME || 'データベースの名前'


});

//これは省略してもoK。
connection.connect();

データベースの確認

今回は下記のような構造を持ったデータベースを用意しました。

 

node_testという名前のDB

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| node_test          |
+--------------------+

node_test_tableという名前のテーブル

MariaDB [node_test]> show tables;
+---------------------+
| Tables_in_node_test |
+---------------------+
| node_test_table     |
+---------------------+


node_test_coulomという名前のカラム

MariaDB [node_test]> SHOW COLUMNS FROM node_test_table
    -> ;
+------------------+-------------+------+-----+---------+-------+
| Field            | Type        | Null | Key | Default | Extra |
+------------------+-------------+------+-----+---------+-------+
| node_test_coulom | varchar(20) | YES  |     | NULL    |       |
+------------------+-------------+------+-----+---------+-------+

最初入ってるデータ

MariaDB [node_test]> SELECT node_test_coulom FROM node_test_table;
+------------------+
| node_test_coulom |
+------------------+
| value1           |
| node_test_value  |
+------------------+


データの挿入

var sql = "INSERT INTO node_test.node_test_table (node_test_coulom) VALUES ('testnode')";

connection.query(sql, function (err, result) {
    if (err) throw err;
    console.log("1 record inserted");
  });   

データの確認

connection.query('SELECT node_test_coulom FROM node_test_table;', function (error, results, fields) {

console.log(results);

})

確認


# node node_test.js 

1 record inserted
[ RowDataPacket { node_test_coulom: 'value1' },
  RowDataPacket { node_test_coulom: 'node_test_value' },
  RowDataPacket { node_test_coulom: 'testnode' }
]

全ソース

var mysql      = require('mysql');
var connection = mysql.createConnection({


host: process.env.DB_HOST || '127.0.0.1',
user: process.env.DB_USER || 'ユーザー名',
password: process.env.DB_PASS || 'パスワード',
database: process.env.DB_NAME || 'テーブル名'


});

//これは省略してもoK。
connection.connect();
console.log('node楽しい♪');


var sql = "INSERT INTO node_test.node_test_table (node_test_coulom) VALUES ('testnode')";

connection.query(sql, function (err, result) {
    if (err) throw err;
    console.log("1 record inserted");
  });                                                                                                                                                                                


connection.query('SELECT node_test_coulom FROM node_test_table;', function (error, results, fields) {

console.log(results);

})

藤沢瞭介(Ryosuke Hujisawa)
  • りょすけと申します。18歳からプログラミングをはじめ、今はフロントエンドでReactを書いたり、AIの勉強を頑張っています。off.tokyoでは、ハイテクやガジェット、それからプログラミングに関する情報まで、エンジニアに役立つ情報を日々発信しています!

未整理記事