JavaScriptとTypeScriptのためのより良いORMであるPrismaを使って、ExpressアプリでMySQL、PostgreSQL、SQL Serverデータベースからデータをクエリ。
Prismaはデータ操作を簡単にします!型安全なNode.js & TypeScript ORM、グローバルデータベースキャッシュ、接続プーリング、リアルタイムデータベースイベントを提供します。
// Creating a new recordawait prisma.user.create({firstName: “Alice”,email: “alice@prisma.io”})
id firstName email1 Bobby bobby@tables.io2 Nilufar nilu@email.com3 Jürgen jums@dums.edu4 Alice alice@prisma.io
Prisma ORMは、Expressサーバーでデータベースをクエリするために使用される次世代ORMです。プレーンなSQLクエリ、knex.jsのようなクエリビルダー、またはTypeORM、MikroORM、Sequelizeのような従来のORMの代替として使用できます。
Prisma ORMはRESTおよびGraphQL APIの構築に使用でき、マイクロサービスとモノリシックアーキテクチャの両方とスムーズに統合できます。
追加ツールでPrisma ORMの使用をさらに強化できます
• Prisma Accelerateは、データベースクエリを高速化するグローバルデータベースキャッシュおよびスケーラブルな接続プールです。
• Prisma Pulseを使用すると、リアクティブなリアルタイムアプリケーションを型安全な方法で構築できます。
Prismaは、Expressと完全に統合された便利なデータベースアクセスレイヤーを提供します。
以下のコードは、APIサーバーを構築するためにExpressを使用する際のPrismaのさまざまな使用方法を示しています。
Prismaは、ルートハンドラー内でデータベースのデータの読み取りと書き込みに使用されます。
1import express from 'express'2import { PrismaClient } from '@prisma/client'34const prisma = new PrismaClient()5const app = express()67app.get('/feed', async (req, res) => {8 const posts = await prisma.post.findMany({9 where: { published: true },10 include: { author: true },11 })12 res.json(posts)13})1415app.post('/post', async (req, res) => {16 const { title, content, authorEmail } = req.body17 const post = await prisma.post.create({18 data: {19 title,20 content,21 published: false,22 author: { connect: { email: authorEmail } },23 },24 })25 res.json(post)26})2728app.put('/publish/:id', async (req, res) => {29 const { id } = req.params30 const post = await prisma.post.update({31 where: { id },32 data: { published: true },33 })34 res.json(post)35})3637app.delete('/user/:id', async (req, res) => {38 const { id } = req.params39 const user = await prisma.user.delete({40 where: {41 id,42 },43 })44 res.json(user)45})4647const server = app.listen(3000)
Prismaは、ルートハンドラー内でデータベースのデータの読み取りと書き込みに使用されます。
1import express from 'express'2import { PrismaClient } from '@prisma/client'34const prisma = new PrismaClient()5const app = express()67app.get('/feed', async (req, res) => {8 const posts = await prisma.post.findMany({9 where: { published: true },10 include: { author: true },11 })12 res.json(posts)13})1415app.post('/post', async (req, res) => {16 const { title, content, authorEmail } = req.body17 const post = await prisma.post.create({18 data: {19 title,20 content,21 published: false,22 author: { connect: { email: authorEmail } },23 },24 })25 res.json(post)26})2728app.put('/publish/:id', async (req, res) => {29 const { id } = req.params30 const post = await prisma.post.update({31 where: { id },32 data: { published: true },33 })34 res.json(post)35})3637app.delete('/user/:id', async (req, res) => {38 const { id } = req.params39 const user = await prisma.user.delete({40 where: {41 id,42 },43 })44 res.json(user)45})4647const server = app.listen(3000)
マイクロサービスまたはモノリシックアプリを構築している場合でも、Prismaはスタックに完全に適合します。
Prismaは、データベースクエリのオートコンプリート、優れた開発者体験、完全な型安全性を提供します。
Prisma Clientは、JavaScriptでもオートコンプリートのような利点がある、完全に型安全なデータベースクエリを保証します。
Prismaの宣言的モデリング言語はシンプルで、データベーススキーマを直感的に記述できます。
宣言的なPrismaスキーマから、予測可能でカスタマイズ可能なSQLマイグレーションを生成します。
Prisma Clientは、一般的なAPI機能(例:ページネーション、フィルターなど)のクエリを提供することで、ボイラープレートを削減します。
Express、Prisma、PostgreSQLを使用したREST API構築の包括的なチュートリアル
SQLiteデータベースを使用したREST APIのすぐに実行できるサンプルプロジェクト
SQLiteデータベースを使用したGraphQL APIのすぐに実行できるサンプルプロジェクト
コミュニティメンバーやPrismaチームと交流できる複数のチャンネルがあります。