masalibの日記

システム開発、運用と猫の写真ブログです

Deno.landで環境変数を使う

前回,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()

環境変数が取得できない時の処理が必要なのですがそちらは省略します

参考URL

qiita.com

scrapbox.io