iT邦幫忙

2022 iThome 鐵人賽

DAY 14
0
Modern Web

Full Stack Web Development 網站實作系列 第 14

Day 14 使用Next.js, Tailwind CSS 和 Supabase 做一個影像畫廊 image gallery app (5) -- 讀取 Supabase 資料

  • 分享至 

  • xImage
  •  

讀取 Supabase 資料
首先安裝 supabase-js:

npm i @supabase/supabase-js

接著,在根目錄,建立 client.js 檔案,輸入下面內容:

// client.js
import { createClient } from '@supabase/supabase-js'

export const supabaseAdmin = createClient(
          process.env.NEXT_PUBLIC_SUPABASE_URL,
          process.env.SUPABASE_SERVICE_ROLE_KEY
);

完成這些動作,就建立了 Supabase Client 端了。再加上昨天建立的 .env.local,我們就可以使用 Supabase 的資料了。可以執行 npm run dev,看這些檔案和設定有沒有問題。

接下來,修改 /pages/index.js 程式,因為我們的資料不會變動頻繁,可以用 Next 的 getStaticProps 函數。 m用這個函數,我們可以抓取(fetch) 在 Server 的資料,且將資料以 props 屬性,傳回給 page 中預設輸出的 React 元件,在我們這個例子中,就是 Home 這個元件。

import { supabaseAdmin } from "../client";
import Hero from "../components/Hero";

export default function Home({ twimgs }) {

  console.log(twimgs);
  return (
    <div className="bg-gray-700">
      <Hero />
    </div>
  )
}

export async function getStaticProps() {
   
   // 呼叫(call) 讀取方法和傳遞資料的API link
  const { data } = await supabaseAdmin.from('images').select('*');
  const twimgs = data
  
  // 傳回結果:名為 twimgs 放在 props 裡
  return {
    props: { twimgs }
  }
}

執行 npm run dev,看傳回那些資料。因為程式中我們使用 console.log() 所以到瀏覽器的 console 看傳回資料, 或者在終端機上也看傳回的資料。
瀏覽器畫面:(紅框部分)
https://ithelp.ithome.com.tw/upload/images/20220929/20129584DaMCoq1JkT.png

終端機畫面:(紅框部分)
https://ithelp.ithome.com.tw/upload/images/20220929/201295840dlZVjGqZd.png

接下來,要新增能秀出這些資料在螢幕上的元件。


上一篇
Day 13 使用Next.js, Tailwind CSS 和 Supabase 做一個影像畫廊 image gallery app (4) -- Supabase
下一篇
Day 15 使用Next.js, Tailwind CSS 和 Supabase 做一個影像畫廊 image gallery app (6) -- 顯示 Supabase 資料在螢幕上
系列文
Full Stack Web Development 網站實作30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言