次.の投稿を投稿してください
こんにちは!過去2、3の記事で、PrismaとPostgresデータベースを見てきました.
この記事では、次を作成します.Postgresデータベースにデータを投稿できるJSアプリ.
我々は何を構築する: Spotifyによるユーザ徴候 ユーザーはSpotifyからプレイリストを読み込みます ユーザーは、我々のPostgresデータベースにプレイリストのうちの1つを同期させることができます 次のようになります.
出発点の設定
私は、使用するつもりですSpotify login example 今日の記事の出発点として昨日を作りました.
あなたが沿って続くならば、それをダウンロードしてくださいGitHub はい.
我々がする必要がある最初のことは、我々のアプリケーションにPrisma依存性を追加することです.
開放する
データベースを設定する
我々がする必要がある次のことは、我々のプレイリストのためのスキーマを定義することです.開ける
エンティティを投稿するAPIエンドポイントの作成
私たちは既に
開ける
フロントエンドアクションの作成
フロントエンドのために
map関数の中には、このようにクリックアクションでボタンを追加します.
これは、一度ボタンをクリックすると、この関数を呼び出し、我々のAPIにそれを投稿するように完璧です.
を返します.
また、完全なコードを見つけることができますGitHub .
読んでいただきありがとうございます、接続しましょう!
私のブログを読んでくれてありがとう.私の電子メール会報を購読して、接続してくださいFacebook or
この記事では、次を作成します.Postgresデータベースにデータを投稿できるJSアプリ.
我々は何を構築する:
出発点の設定
私は、使用するつもりですSpotify login example 今日の記事の出発点として昨日を作りました.
あなたが沿って続くならば、それをダウンロードしてくださいGitHub はい.
我々がする必要がある最初のことは、我々のアプリケーションにPrisma依存性を追加することです.
npm i -D prisma
npm i @prisma/client
次に、Prismaクライアントを初期化する必要があります.npx prisma init
これはPrismaフォルダを生成し、データベースURLを.env
ファイル.開放する
.env
ファイルと貼り付けPostgres database URL .データベースを設定する
我々がする必要がある次のことは、我々のプレイリストのためのスキーマを定義することです.開ける
prisma/schema.prisma
ファイルを下に追加します.model Playlist {
id Int @default(autoincrement()) @id
title String
image String?
uri String @unique
addedBy String
}
ここからデータベースを構築する必要があります.npx prisma db push
ローカルスキーマを生成します.npx prisma generate
エンティティを投稿するAPIエンドポイントの作成
私たちは既に
playlists
エンドポイントので、それを活用しましょうPOST
リクエスト.開ける
pages/api/playlists.js
ファイルとPrisma要件をインポートして起動します.import { PrismaClient } from '@prisma/client';
const prisma = new PrismaClient();
ではハンドラを修正しましょうPOST
and GET
.const handler = async (req, res) => {
const {
token: { accessToken, email },
} = await getSession({ req });
if (req.method === 'POST') {
// Do post stuff
} else if (req.method === 'GET') {
const response = await getUsersPlaylists(accessToken);
const { items } = await response.json();
return res.status(200).json({ items });
}
res.end();
};
に関してはPOST
セクションでは、ポストクエリーから正しいデータを抽出し、新しいオブジェクトを作成してデータベースに送信します.if (req.method === 'POST') {
const { body } = req;
const {
name,
images: { 0: { url } = {} },
uri,
} = JSON.parse(body);
const playlistItem = {
title: name,
image: url,
uri: uri,
addedBy: email,
};
}
それから、我々がする必要があるすべては、我々のPrismaクライアントを呼び出して、使用しますcreate
関数を挿入します.const playlist = await prisma.playlist.create({
data: playlistItem,
});
return res.status(200).json(playlist);
そして、我々が現在実行するならば、それはそれですPOST
このAPIエンドポイントへのリクエストは、私たちのプレイリストが追加されます.フロントエンドアクションの作成
フロントエンドのために
index.js
ページ.map関数の中には、このようにクリックアクションでボタンを追加します.
{list.map((item) => (
<div key={item.id}>
<h1>{item.name}</h1>
<img src={item.images[0]?.url} width='100' />
<br />
<button onClick={() => saveToDatabase(item)}>
Save in database
</button>
</div>
))}
さあ行きましょうsaveToDatabase
関数.const saveToDatabase = async (item) => {
const res = await fetch('api/playlists', {
method: 'POST',
body: JSON.stringify(item),
});
const data = await res.json();
};
この例では、APIリクエストを渡すだけですが、返されたデータはまだ何もしません.これは、一度ボタンをクリックすると、この関数を呼び出し、我々のAPIにそれを投稿するように完璧です.
を返します.
また、完全なコードを見つけることができますGitHub .
読んでいただきありがとうございます、接続しましょう!
私のブログを読んでくれてありがとう.私の電子メール会報を購読して、接続してくださいFacebook or
Reference
この問題について(次.の投稿を投稿してください), 我々は、より多くの情報をここで見つけました https://dev.to/dailydevtips1/nextjs-posting-data-to-postgres-through-prisma-11p7テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol