WEBアプリケーションと言ったら兎にも角にもmysqlでしょ!! という事でDeno.landでmysqlに接続してデータを取得したいと思います
前作業1
DBは前につくったvcwwのVMに接続します
ローカルからVMのmysqlに接続するために vagrantfileに下記を追記しました
config.vm.network "forwarded_port", guest: 3306, host: 3306
これで127.0.0.1:3306に接続するとvmのmysqlに接続します
前作業2
wordpressのテーブルだと分かりづらいので適当なテーブルを作りました。
CREATE TABLE `Product` ( `id` varchar(64) NOT NULL, `name` varchar(256) DEFAULT NULL, `description` varchar(1024) DEFAULT NULL, `price` int(11) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
データがないとうまくいったのかわからないのでデータを用意
INSERT INTO `wordpress`.`Product` (`id`, `name`, `description`, `price`) VALUES ('1', 'Product1', 'description1', '100'); INSERT INTO `wordpress`.`Product` (`id`, `name`, `description`, `price`) VALUES ('2', 'Product2', 'description2', '200'); INSERT INTO `wordpress`.`Product` (`id`, `name`, `description`, `price`) VALUES ('3', 'Product3', 'description3', '300');
データ取得のプログラム
import { Client } from "https://deno.land/x/mysql/mod.ts"; const client = await new Client().connect({ hostname: "127.0.0.1", username: "wordpress", db: "wordpress", password: "wordpress", port:3306 }); const data = await client.query(`SELECT id , name , description, price FROM Product;`) console.log(data) await client.close()
- パスワードの生で書いてありますがいずれは環境変数から取得したい
- portは文字列だと怒られました。当たり前ですよね
結果
$ deno run --allow-net simpleServer3.ts INFO connecting 127.0.0.1:3306 INFO connected to 127.0.0.1 [ { id: "1", name: "Product1", description: "description1", price: 100 }, { id: "2", name: "Product2", description: "description2", price: 200 }, { id: "3", name: "Product3", description: "description3", price: 300 } ] INFO close connection
infoは勝手に表示されるのかな・・・ちょっと消したい