Using Knex to Connect to PostgreSQL
We can use Knex to connect to PostgreSQL; just install the Node-postgres library.
失くすものさえない今が強くなるチャンスよ
We can use Knex to connect to PostgreSQL; just install the Node-postgres library.
Sometimes we need to show native SQL for debugging, we can use .toSQL().toNative()
to show native SQL.
We can use Knex to connect to MySQL, jsut install MySQL library.
We can use Knex to connect to MSSQL, jsut install Tedious library.
If we want to use Express DELETE to delete data from PostgreSQL, we can use Knex and Node-postgres to connect.
If we want to use Express PUT to edit data to PostgreSQL, we can use Knex and Node-postgres to connect.
If we want to use Express POST to add data to PostgreSQL, we can use Knex and Node-postgres to connect.
Knex allow us to execute partial raw SQL, but we can also use knex.raw
to execute whole raw SQL.
If we want to use Express GET to return data from PostgreSQL, we can use Knex and Node-postgres to connect.
Although we can use raw SQL DELETE, but it’s more concise to use Knex to delete data.
Although we can use raw SQL UPDATE, but it’s more concise to use Knex to update data.
Although we can use raw SQL INSERT, but it’s more concise to use Knex to insert data.
實務上雖然大部分都使用 Knew 組合 SQL 或單一 Raw SQL Statement,但有時候可能得同時使用多個 Statement,在 Knex 也沒問題。
Knex 允許我們連 SELECT
也使用 Raw SQL,但回傳結果不太一樣。
Knex 的 where
也可使用 Builder,藉此我們可動態組合 SQL。
ECAMAcript 2015 提供了 Promise 與 then
,而 ECMAScript 2017 更支援了 async await
,這兩種寫法可彼此交換,但常有人只看得懂其中一種寫法,維護其他 Codebase 就看不懂了,本文特別說明之。
Knex 的 where
能接受 Object Literal,若配合 ECMAScript 2015 的 Property Shorthand,則有更精簡寫法。
實務上有時必須對兩個以上 Table 做 Query,將結果合併後再傳回,由於 Knex 回傳為 Promise,該如何將這兩個 Promise 合併呢 ?
Subquery 亦為常用 SQL 語法,不過在 Knex 文件並沒有說明,因此特別紀錄之。
Inner Join 為 SQL 代表性功能,Knex 當然也支援,且提供多種寫法。
實務上有時 OR 條件並不是與 AND 同一層,而是躲在 ()
內,這種特殊 SQL 在 Knex 該如何寫呢 ?
sum
是實務上常見需求,這在 Knex 該如何寫呢 ?
count
是實務上常見需求,這在 Knex 該如何寫呢 ?
Knex 是很優秀的 SQL Query Builder,唯 Knex 是以 Method Chaining 設計,是否有機會以 Function Pipeline 使用 Knex 呢 ?
在使用 Knex 產生 SQL 時,實務上會遇到 select
與 where
重複出現,或者 select
與 where
動態產生,對於這種 Method Chaining 風格的 Query Builder 可透過 Higher Order Function 動態組合。