前回,MYSQLの接続のプログラムを書いたのですが、パスワードとかをソースに書くのは普通はしないです。なのでデプロイも考慮して環境変数に接続情報を記載します。参考にしたのがHerokuにアップするWEBアプリケーションだったのでコマンドベースです。ファイルでの環境変数の設定もあるのですが、自分もherokuにアップする予定なので今回は使いません
前作業
DBに接続する情報の環境変数を設定します。Windows系とLinux系でちがうので注意。
windowsの場合
set MYSQL_HOST_ENV=127.0.0.1 set MYSQL_USERNAME_ENV=wordpress set MYSQL_DB_ENV=wordpress set MYSQL_PASSWORD_ENV=wordpress set MYSQL_PORT_ENV=3306
Linux系の場合
export MYSQL_HOST_ENV=127.0.0.1 export MYSQL_USERNAME_ENV=wordpress export MYSQL_DB_ENV=wordpress export MYSQL_PASSWORD_ENV=wordpress export MYSQL_PORT_ENV=3306
環境変数を使う
const hostname = Deno.env.get("MYSQL_HOST_ENV") as string
環境変数はかならず文字列になるみたいです。 もし数値を使う場合は文字列から数値に変換する必要があります。
const port = parseInt(Deno.env.get("MYSQL_PORT_ENV") as string)
実行する時には
--allow-env
が必要です
データ取得のプログラム
前回のソース
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()
環境変数を使ったソース
import { Client } from "https://deno.land/x/mysql/mod.ts"; //環境変数 const hostname = Deno.env.get("MYSQL_HOST_ENV") as string const username = Deno.env.get("MYSQL_USERNAME_ENV") as string const db = Deno.env.get("MYSQL_DB_ENV") as string const password = Deno.env.get("MYSQL_PASSWORD_ENV") as string const port = parseInt(Deno.env.get("MYSQL_PORT_ENV") as string) //環境変数はstringなので string to numberにする //mysqlに接続する const client = await new Client().connect({ hostname: hostname, username: username, db: db, password: password, port:port }); //データ取得 const data = await client.query(`SELECT id , name , description, price FROM Product;`) console.log(data) //mysqlに接続を終了する await client.close()
環境変数が取得できない時の処理が必要なのですがそちらは省略します