🥏
fastifyをmysqlに接続する
TypeScriptだと対応していない?
TypeScriptを使用して、サンプル作成を使用としたのですが、パッケージが対応していないのかできなかったです。
今回は、JavaScriptに対応したものを作りました。
📺こちらの動画を参考にした
📗公式ドキュメントのコードを参考に作成した
fastifyのプロジェクトを作成後に、パッケージを追加する
npm i @fastify/mysql
データベースにテーブルを作成する
MySQLのデータベースに、usersテーブルを作成する。私は、MyDataというデータベースの中に、usersテーブルを作成しました。
-- データベースの切り替え
use MyData;
--userテーブルを作成、id, name, age, emailを定義する
CREATE TABLE users (
id MEDIUMINT NOT NULL AUTO_INCREMENT,
name VARCHAR(255),
age INT,
email VARCHAR(255),
PRIMARY KEY (id)
);
INSERT INTO users (name, age, email) VALUES ('John', 25, 'John@gmail.com');
SELECT * FROM users;
📡データベースに接続するコード
接続が正しくできていればブラウザに、MySQLのデータがJSON形式で表示されます。
const fastify = require('fastify')()
fastify.register(require('@fastify/mysql'), {
// connectionStringで、接続先のDBを指定する。パスワード、ユーザー名、ポート番号、DB名を指定する。
connectionString: 'mysql://root:1234@localhost:3306/MyData'
})
fastify.get('/user/:id', function(req, reply) {
fastify.mysql.query(
'SELECT id, name, age, email FROM users WHERE id=?', [req.params.id],
function onResult (err, result) {
reply.send(err || result)
}
)
})
fastify.listen(3000, (err) => {
if (err) throw err
console.log(`Server is listening on port 3000`)
})
ローカルサーバーを起動して、エンドポイントにアクセスする
node server
curlコマンドを実行すると、エンドポイントから、userテーブルのデータを取得できます。
hashimotojunichi@hashimotojunichinoMacBook-Pro fastify-mysql % curl http://localhost:3000/user/1
[{"id":1,"name":"John","age":25,"email":"John@gmail.com"}]%
まとめ
データの追加もして表示するのをやってみましたが、user/1と指定して、idを指定しないと、データの取得はできませんでした。次は、もっといい感じのコードを書けるように頑張ります。
Discussion