mysql + typeorm 初探

Ben Hu
5 min readJun 21, 2020

--

mysql是其中一種多人用的關聯式資料庫,而如果你用JS,你會希望可以透過JS語法去進行資料庫的操作,而不是直接在程式裡面寫mysql的語法,這就需要ORM套件的幫助。而typeorm就是一種,而且,typeorm不只有支援mysql, 而是支援很多資料庫喔!

https://typeorm.io/#/

強烈建議大家把typeorm官網的第一頁全部都看過一次,基本上也就入門囉!

以下,不會介紹和說明typeorm的細節,只是帶大家走過一篇我走過把這個範例跑起來成功的過程。

這篇文章要做的,如下

  1. 下載 SQL
  2. 使用 SQL CLI 來建立資料庫
  3. 使用 typeorm 的例子來使用建立的資料庫
  4. 使用 curl 來測試API功能
  1. 下載 SQL

這邊示範window版本喔。

第一步,到這個網頁下載,我是抓2x mb的那個版本

下載網頁

接下來就是next next的往下裝,基本上你需要的只有一個服務,就是MySQL Server,我是抓MySQL Server 8.0(你看到這篇時,版本未必一樣喔)。其他這邊可以不抓,不會用到。

安裝的過程中,不要忘了記錄好輸入的密碼喔。

2. 使用 SQL CLI 來建立資料庫

下載後到這個資料夾下,點選MySQL 8.0 Command Line Client

資料夾打開cli

會看到類似這個畫面

接下來要,我們要建立database

跟database的有關操作如下

可以照著上面做,就會建立出一個叫做 mydb1 的資料庫囉!

為何要建立資料庫,因為我們等等使用typeorm需要用到!

以上就把資料庫建立好了。

3. 使用 typeorm 的例子來使用建立的資料庫

我習慣用express,因此我選擇用這個例子

先直接git clone上面這個repo。下一步就是依照裡面的readme做。

用 npm i 把套件裝起來。

然後到ormconfig.json,基本上要修改的就是username, password, database

database就是我們剛剛建立的。

名稱你可以用root, 或是你可以另外用sql shell(另一個工具,一樣官網抓)另外開權限給其他使用者登入這個db, 那你就可以用其他使用者登入

pass就是你一開始設定的root的pass或是你開權限給其他人的pass

port就看你有沒有改囉。

一樣,剩下的就是去好好學習這個範例裡面的程式碼,如果有去看完官網第一頁的文章,那就會好懂很多。

一切就緒,就跑起來吧。

在root下 npm start

4. 使用 curl 來測試API功能

開起來後,到 http://localhost:3000/posts,應該是看不到東西的。打開的時候,裡面是沒有資料的。

不過打開的時候,如果你用mysql CLI去看(先用 use mydb1進入db, 再用show tables 看)

可以看到,在express開起來的時候,因為程式碼裡面是已經有建立好兩個table放在entity資料夾下,因此是可以看到有兩張表,就已經建立好了。

那我們開始來測試API吧!

如果看routes.ts,可以看到我們有三個端點。

兩個GET來看全部的post和看個別的post, 和一個post可以傳資料到後端,就是透過express然後透過ORM存到mysql

我們這邊用curl來發post, 也用curl來看結果吧。

我電腦上有裝cmder, 指令如下(如果用linux和Powershell, 如果下面的curl跑起來有問題,再請教Google大神GET and POST的標準寫法,再套用就可以囉)

GET也可以到網頁去看

以上就完成這次練習囉!

謝謝~

--

--

Ben Hu

What I cannot create, I do not understand — Richard Feynman