LoginSignup
1
0

[TS] Next.js + postgresの環境構築

Posted at

はじめに

無料でDBを使いたいと思い探した結果、Vercelで無料のpostgresができるとのことだったので、試してみた。

環境構築

Next.js の準備

npx create-next-app@latest

image.png

No / Yes の選択肢が出たらすべてOKで大丈夫
もしくはVercelのホームページからテンプレートから作成しても良い
自分はTSのみ選択肢を変えてYesにした(スクショは異なるが)。

npm run dev

http://localhost:3000/で確認することができる。

image.png

Github と Vercel を連携する

VercelとGihubが繋がっている状態なら、簡単に取り込むことができる。
もしくはVercelからテンプレートを作成することが、簡単にGithubに取り込むことも可能。

image.png

連携された状態のプロジェクト

image.png

Githubのデータに基づいて、Vercelでhostingされる。

postresを導入

プロジェクト → Storage → Connect Store ボタンをクリック

image.png

4つほどの選択肢があるが、今回はPostgresを選択

image.png

プロジェクト → Settings → Environment Variables

postgresへの接続はとても簡単で、.envの情報が自動で入力された状態にある。
local環境で同じくDBとつなぐためには、envデータをコピーし、ローカルでenv.localを作成し、移すのみ

image.png

env.local
POSTGRES_URL=
POSTGRES_URL_NON_POOLING=
POSTGRES_USER=
POSTGRES_HOST=
POSTGRES_PASSWORD=
POSTGRES_DATABASE=

接続の確認

npm i @vercel/postgres
npm run dev
app/page.tsx


import { sql } from "@vercel/postgres";

export default async function Home() {

  const drop = await sql`
  drop table if exists  test;`

  const create = await sql`
  create table test(
    id serial primary key,
    name text
    );`

  const insert = await sql`
  insert into test(name) values('test good');
  `
  
  const { rows } = await sql`select * from test;`
  console.log(rows)

  return (
    <div>
      {rows.map((row) => (
        <div key={row.id}>
          {row.id} - {row.name}
        </div>
      ))}
    </div>
  );
}
terminal
[ { id: 1, name: 'test good' } ]

image.png

終わりに

サーバーレスでDBと連携しながら動かしていることがとにかくすごい。
hostingも簡単にできてしまうので、手軽に公開するためのweb siteとしてはとても使い勝手がよろしいと思われる。

参考

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0