<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Supabase-Js on BenzHub</title><link>https://benzhub.github.io/tags/supabase-js/</link><description>Recent content in Supabase-Js on BenzHub</description><generator>Hugo</generator><language>zh-TW</language><lastBuildDate>Wed, 07 Oct 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://benzhub.github.io/tags/supabase-js/index.xml" rel="self" type="application/rss+xml"/><item><title>Supabase 型別生成與進階用法 | Supabase 完整教學</title><link>https://benzhub.github.io/post/supabase/018-typescript-types/</link><pubDate>Wed, 07 Oct 2026 00:00:00 +0000</pubDate><guid>https://benzhub.github.io/post/supabase/018-typescript-types/</guid><description>&lt;blockquote&gt;
&lt;p&gt;上一篇我們把 &lt;strong&gt;supabase-js&lt;/strong&gt; 的 &lt;strong&gt;CRUD&lt;/strong&gt; 讀寫玩熟了，但那些查詢的 &lt;code&gt;data&lt;/code&gt; 型別其實還很鬆散。這一篇要補上最後一塊拼圖——&lt;strong&gt;型別安全&lt;/strong&gt;：用 &lt;strong&gt;Supabase CLI&lt;/strong&gt; 的 &lt;code&gt;supabase gen types typescript&lt;/code&gt; 從資料庫 schema 生成 &lt;code&gt;Database&lt;/code&gt; 型別，搭配 &lt;code&gt;createClient&amp;lt;Database&amp;gt;&lt;/code&gt; 注入 client，讓每一次 &lt;code&gt;select&lt;/code&gt;、&lt;code&gt;insert&lt;/code&gt;、&lt;code&gt;update&lt;/code&gt; 都有完整的 &lt;strong&gt;TypeScript&lt;/strong&gt; 推導與 &lt;strong&gt;IntelliSense&lt;/strong&gt;。你還會學到 &lt;code&gt;Tables&lt;/code&gt; / &lt;code&gt;TablesInsert&lt;/code&gt; 等 helper、用 &lt;code&gt;QueryData&lt;/code&gt; 推導複雜關聯查詢、&lt;code&gt;overrideTypes&lt;/code&gt; 覆寫，以及 &lt;code&gt;abortSignal&lt;/code&gt;、&lt;code&gt;csv&lt;/code&gt;、&lt;code&gt;explain&lt;/code&gt; 等進階選項與 &lt;strong&gt;service_role&lt;/strong&gt; 客戶端。&lt;/p&gt;
&lt;/blockquote&gt;</description></item><item><title>supabase-js CRUD 查詢與寫入 | Supabase 完整教學</title><link>https://benzhub.github.io/post/supabase/017-crud-operations/</link><pubDate>Tue, 06 Oct 2026 00:00:00 +0000</pubDate><guid>https://benzhub.github.io/post/supabase/017-crud-operations/</guid><description>&lt;blockquote&gt;
&lt;p&gt;上一篇我們認識了 &lt;strong&gt;supabase-js&lt;/strong&gt; 這個統一 &lt;strong&gt;client&lt;/strong&gt;，也知道 &lt;code&gt;supabase.from()&lt;/code&gt; 是資料庫子模組的入口。這一篇就把最常用的一塊——&lt;strong&gt;CRUD&lt;/strong&gt;（Create、Read、Update、Delete）——徹底玩熟。你會學到用 &lt;code&gt;insert&lt;/code&gt; 新增（單筆與多筆批次）、&lt;code&gt;select&lt;/code&gt; 查詢、&lt;code&gt;update&lt;/code&gt; 搭配 &lt;strong&gt;filter&lt;/strong&gt; 修改、&lt;code&gt;upsert&lt;/code&gt; 靠 &lt;code&gt;onConflict&lt;/code&gt; 做「有就更新、沒有就新增」、&lt;code&gt;delete&lt;/code&gt; 刪除，並且看懂貫穿全部操作的 &lt;code&gt;{ data, error }&lt;/code&gt; 錯誤處理模式、為什麼 &lt;strong&gt;v2&lt;/strong&gt; 寫入預設不回傳資料、以及 &lt;code&gt;.single()&lt;/code&gt; 與 &lt;code&gt;.maybeSingle()&lt;/code&gt; 的差別。&lt;/p&gt;
&lt;/blockquote&gt;</description></item><item><title>supabase-js 客戶端入門 | Supabase 完整教學</title><link>https://benzhub.github.io/post/supabase/016-client-sdk-intro/</link><pubDate>Mon, 05 Oct 2026 00:00:00 +0000</pubDate><guid>https://benzhub.github.io/post/supabase/016-client-sdk-intro/</guid><description>&lt;blockquote&gt;
&lt;p&gt;前面十五篇，我們一路用 &lt;strong&gt;SQL&lt;/strong&gt;、&lt;code&gt;curl&lt;/code&gt; 與裸的 &lt;code&gt;.from()&lt;/code&gt;／&lt;code&gt;.rpc()&lt;/code&gt; 認識了 &lt;strong&gt;Supabase&lt;/strong&gt; 的資料庫與 &lt;strong&gt;REST API&lt;/strong&gt;。但真正在寫應用時，你不會手刻 &lt;strong&gt;HTTP&lt;/strong&gt; 請求——你會用官方的 &lt;strong&gt;supabase-js&lt;/strong&gt; 客戶端。這一篇帶你正式認識這個 &lt;strong&gt;SDK&lt;/strong&gt;：怎麼 &lt;code&gt;npm install @supabase/supabase-js&lt;/code&gt;、怎麼用 &lt;code&gt;createClient(url, anonKey)&lt;/code&gt; 建立一個 &lt;strong&gt;client&lt;/strong&gt;、這個 client 底下 &lt;code&gt;from&lt;/code&gt;／&lt;code&gt;auth&lt;/code&gt;／&lt;code&gt;storage&lt;/code&gt;／&lt;code&gt;realtime&lt;/code&gt;／&lt;code&gt;functions&lt;/code&gt; 五大子模組各管什麼，以及最關鍵的兩個實務問題——&lt;strong&gt;瀏覽器該用哪把金鑰、伺服器該用哪把&lt;/strong&gt;，還有為什麼整個 App 只該建立&lt;strong&gt;一個&lt;/strong&gt; client（單例模式）。&lt;/p&gt;
&lt;/blockquote&gt;</description></item></channel></rss>