Node.jsでMySQLのレコードを更新する方法を徹底解説
この記事では、Node.jsを使ってMySQLのレコードを更新する方法について解説します。Node.jsのサーバーから動的にMySQLテーブルの値を更新する手順を、具体的なコード例とともに見ていきましょう。更新後にはSELECT文を実行することで、レコードが正しく更新されたかどうかを確認できます。
事前準備
作業を始める前に、以下のコマンドがすでに実行されていることを確認してください。
- mkdir mysql-test
- cd mysql-test
- npm init -y
- npm install mysql
これらの手順は、プロジェクトフォルダにNode.js用のmysqlパッケージ(依存関係)をインストールするためのものです。
Studentsテーブルのレコードを更新する手順
MySQLテーブルの既存レコードを更新するには、以下の手順に従います。
- まず、app.jsファイルを作成します。
- 次に、後述のコードスニペットをファイルにコピー&ペーストします。
- 最後に、以下のコマンドでコードを実行します。
>> node app.js
例1:名前を条件にレコードを更新する
// NPMでmysqlパッケージを読み込む
var mysql = require('mysql');
// MySQLへの接続を作成
var con = mysql.createConnection({
host: "localhost",
user: "yourusername",
password: "yourpassword",
database: "mydb"
});
con.connect(function(err) {
if (err) throw err;
// nameが「John」のレコードのaddressを「Bangalore」に更新
var sql = "UPDATE student SET address = 'Bangalore' WHERE name = 'John';"
con.query(sql, function (err, result) {
if (err) throw err;
console.log(result.affectedRows + " Record(s) updated.");
console.log(result);
});
});実行結果
1 Record(s) updated.
OkPacket {
fieldCount: 0,
affectedRows: 1, // 更新された行数を返します
insertId: 0,
serverStatus: 34,
warningCount: 0,
message: '(Rows matched: 1 Changed: 1 Warnings: 0', // マッチした行数を返します
protocol41: true,
changedRows: 1 }この例では、nameが「John」であるレコードを検索し、そのaddressフィールドを「Bangalore」に更新しています。affectedRowsプロパティには実際に更新された行数が格納されます。
例2:住所を条件に複数のレコードを更新する
// NPMでmysqlパッケージを読み込む
var mysql = require('mysql');
// MySQLへの接続を作成
var con = mysql.createConnection({
host: "localhost",
user: "yourusername",
password: "yourpassword",
database: "mydb"
});
con.connect(function(err) {
if (err) throw err;
// addressが「Delhi」のレコードのaddressを「Bangalore」に更新
var sql = "UPDATE student SET address = 'Bangalore' WHERE address = 'Delhi';"
con.query(sql, function (err, result) {
if (err) throw err;
console.log(result.affectedRows + " Record(s) updated.");
console.log(result);
});
});実行結果
3 Record(s) updated.
OkPacket {
fieldCount: 0,
affectedRows: 3, // 更新された行数を返します
insertId: 0,
serverStatus: 34,
warningCount: 0,
message: '(Rows matched: 3 Changed: 3 Warnings: 0', // マッチした行数を返します
protocol41: true,
changedRows: 3 }この例では、WHERE句でaddressが「Delhi」であるレコードを絞り込み、該当するすべてのレコードのaddressを「Bangalore」に一括更新しています。結果として3件のレコードが更新されました。
まとめ
Node.jsからMySQLのレコードを更新する際は、UPDATE文をSQLクエリとしてcon.query()メソッドに渡すだけで実現できます。実行結果として返されるOkPacketオブジェクトのaffectedRows(更新された行数)やchangedRows(変更があった行数)を確認することで、更新処理が正しく行われたかを検証できます。なお、本番環境ではSQLインジェクション対策としてプレースホルダ(?)を使ったパラメータ化クエリの利用を推奨します。
-
Node.jsでMySQLのレコードを削除する方法を解説
はじめにデータベースへのレコード挿入後、不要になったデータを削除する場面も必ず出てきます。MySQLでは、テーブル内のレコードを識別子(条件)に基づいて削除することが可能で、その際には「DELETE FROM」ステートメントを使用します。Node.jsからMySQLのレコードを削除する方法は、主に以下の2通りがあります。静的な削除 – あらかじめ決められた条件値を指定して削除する方法です。動的な削除 – 削除前にユーザーから入力を受け取り、その値に基づいて削除を実行する方法です。事前準備作業を始める前に、以下のコマンドがすでに実行済みであることを確認してください。mkdir mysql-tes
-
Sequelizeを使ってNode.jsでMySQLテーブルを作成する方法
SequelizeとはSequelizeは、PromiseベースのNode.js向けORM(Object-Relational Mapping)ライブラリです。PostgreSQL、MySQL、MariaDB、SQLite、Microsoft SQL Serverなど、主要なリレーショナルデータベースに幅広く対応しており、SQLを直接書かずにJavaScriptだけでデータベース操作を行えます。Sequelizeの主な機能は以下の通りです。トランザクションサポートリレーション(モデル間の関連付け)Eager Loading / Lazy Loading(即時読み込み・遅延読み込み)リードレプリ