<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Postgrest on BenzHub</title><link>https://benzhub.github.io/tags/postgrest/</link><description>Recent content in Postgrest on BenzHub</description><generator>Hugo</generator><language>zh-TW</language><lastBuildDate>Sun, 04 Oct 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://benzhub.github.io/tags/postgrest/index.xml" rel="self" type="application/rss+xml"/><item><title>RPC 呼叫資料庫函式 | Supabase 完整教學</title><link>https://benzhub.github.io/post/supabase/015-rpc-functions/</link><pubDate>Sun, 04 Oct 2026 00:00:00 +0000</pubDate><guid>https://benzhub.github.io/post/supabase/015-rpc-functions/</guid><description>&lt;blockquote&gt;
&lt;p&gt;學會了《Embedded Resources 關聯查詢》之後，你已經能用一支 &lt;strong&gt;API&lt;/strong&gt; 把整棵關聯資料樹撈回來。但有些需求，光靠自動 &lt;strong&gt;API&lt;/strong&gt; 的宣告式查詢還是不夠——&lt;strong&gt;多步驟交易&lt;/strong&gt;（如轉帳要嘛全成功、要嘛全失敗）、跨多表的&lt;strong&gt;複雜聚合&lt;/strong&gt;、需要&lt;strong&gt;繞過或精細控制權限&lt;/strong&gt;的管理操作。這些更適合封裝進 &lt;strong&gt;PostgreSQL&lt;/strong&gt; 的&lt;strong&gt;資料庫函式&lt;/strong&gt;，再用 &lt;strong&gt;Supabase&lt;/strong&gt; 的 &lt;strong&gt;RPC&lt;/strong&gt;（&lt;code&gt;supabase.rpc('fn', { args })&lt;/code&gt;）一支呼叫觸發。這一篇帶你把 &lt;strong&gt;RPC&lt;/strong&gt; 用到位：對應 &lt;strong&gt;Postgres function&lt;/strong&gt;、依名稱傳參數、回傳 scalar／setof／table、對 &lt;strong&gt;SETOF&lt;/strong&gt; 結果串接 &lt;strong&gt;PostgREST&lt;/strong&gt; 篩選、&lt;code&gt;security definer&lt;/code&gt; 搭配 &lt;code&gt;search_path&lt;/code&gt;，並看懂「&lt;strong&gt;RPC&lt;/strong&gt; 其實也走 &lt;strong&gt;REST&lt;/strong&gt;」（&lt;code&gt;/rest/v1/rpc/fn&lt;/code&gt;）的原理，以及 &lt;strong&gt;pg_graphql&lt;/strong&gt; 概觀。&lt;/p&gt;
&lt;/blockquote&gt;</description></item><item><title>Embedded Resources 關聯查詢 | Supabase 完整教學</title><link>https://benzhub.github.io/post/supabase/014-embedded-resources/</link><pubDate>Sat, 03 Oct 2026 00:00:00 +0000</pubDate><guid>https://benzhub.github.io/post/supabase/014-embedded-resources/</guid><description>&lt;blockquote&gt;
&lt;p&gt;學會了《查詢、篩選與分頁》之後，你已經能對&lt;strong&gt;單一資料表&lt;/strong&gt;查得又準又快。但真實世界的資料很少是孤立的——文章有&lt;strong&gt;作者&lt;/strong&gt;、訂單有&lt;strong&gt;客戶&lt;/strong&gt;、商品有&lt;strong&gt;分類&lt;/strong&gt;、演員演過很多&lt;strong&gt;電影&lt;/strong&gt;。這些&lt;strong&gt;關聯&lt;/strong&gt;該怎麼在一次查詢裡一起撈出來，而不用發好幾支 API、再自己在前端拼？這一篇帶你把 &lt;strong&gt;Supabase&lt;/strong&gt;（&lt;strong&gt;PostgREST&lt;/strong&gt;）的 &lt;strong&gt;Embedded Resources 關聯查詢&lt;/strong&gt;用到位：靠&lt;strong&gt;外鍵（Foreign Key）&lt;strong&gt;自動偵測表間關係，用 &lt;code&gt;select('*, author(*)')&lt;/code&gt; 這種寫法一次把關聯 &lt;strong&gt;join&lt;/strong&gt; 成巢狀 JSON，並學會 &lt;code&gt;!inner&lt;/code&gt; 內連接、巢狀篩選、多對多、以及多個外鍵指向同表時的&lt;/strong&gt;關聯消歧義&lt;/strong&gt;，徹底告別 &lt;strong&gt;N+1&lt;/strong&gt; 查詢。&lt;/p&gt;
&lt;/blockquote&gt;</description></item><item><title>查詢、篩選與分頁 | Supabase 完整教學</title><link>https://benzhub.github.io/post/supabase/013-query-filter-pagination/</link><pubDate>Fri, 02 Oct 2026 00:00:00 +0000</pubDate><guid>https://benzhub.github.io/post/supabase/013-query-filter-pagination/</guid><description>&lt;blockquote&gt;
&lt;p&gt;學會了 &lt;strong&gt;PostgREST&lt;/strong&gt; 自動 API 之後，真正的日常查詢幾乎不會是「把整張表撈出來」——你需要精準地&lt;strong&gt;篩選&lt;/strong&gt;、&lt;strong&gt;排序&lt;/strong&gt;，並在大量資料裡&lt;strong&gt;分頁&lt;/strong&gt;。這一篇會帶你把 &lt;strong&gt;Supabase&lt;/strong&gt; 的讀取查詢用到位：用 &lt;code&gt;select&lt;/code&gt; 只取需要的欄位、用 &lt;code&gt;eq&lt;/code&gt;／&lt;code&gt;gt&lt;/code&gt;／&lt;code&gt;ilike&lt;/code&gt;／&lt;code&gt;in&lt;/code&gt;／&lt;code&gt;is&lt;/code&gt;／&lt;code&gt;contains&lt;/code&gt; 等&lt;strong&gt;篩選運算子&lt;/strong&gt;組出精準條件、用 &lt;code&gt;or&lt;/code&gt; 串邏輯、用 &lt;code&gt;order&lt;/code&gt; 排序、用 &lt;code&gt;range&lt;/code&gt; 與 &lt;code&gt;limit&lt;/code&gt; 分頁、用 &lt;code&gt;count&lt;/code&gt; 拿總筆數，最後用 &lt;code&gt;single&lt;/code&gt;／&lt;code&gt;maybeSingle&lt;/code&gt; 優雅地取單筆。全程以 &lt;strong&gt;supabase-js&lt;/strong&gt; 為主、附上 &lt;strong&gt;REST&lt;/strong&gt; 對照，讓你一眼看穿 SDK 底層發了什麼。&lt;/p&gt;
&lt;/blockquote&gt;</description></item><item><title>PostgREST 自動 API 入門 | Supabase 完整教學</title><link>https://benzhub.github.io/post/supabase/012-postgrest-intro/</link><pubDate>Thu, 01 Oct 2026 00:00:00 +0000</pubDate><guid>https://benzhub.github.io/post/supabase/012-postgrest-intro/</guid><description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;PostgREST&lt;/strong&gt; 是 Supabase 自動 API 的心臟——你在資料庫裡建好一張 table，它就自動幫你生出一整套 &lt;strong&gt;REST API&lt;/strong&gt;，端點長得像 &lt;code&gt;/rest/v1/products&lt;/code&gt;，支援讀寫、篩選、排序、分頁，完全不用手寫後端。這一篇會帶你認識這套「建表即有 API」的魔法：endpoint 怎麼組成、&lt;code&gt;apikey&lt;/code&gt; 與 &lt;code&gt;Authorization: Bearer&lt;/code&gt; 兩個 header 各自負責什麼、為什麼 &lt;strong&gt;REST 一樣受 RLS 保護&lt;/strong&gt;，並對照 &lt;code&gt;curl&lt;/code&gt; 直呼與 &lt;code&gt;supabase-js&lt;/code&gt; 兩種寫法，最後解決「新建的表 API 卻看不到」的 &lt;strong&gt;schema cache&lt;/strong&gt; 問題。&lt;/p&gt;
&lt;/blockquote&gt;</description></item></channel></rss>