hapi開発者にとって最適なORM

hapiアプリでMySQL、PostgreSQL、SQL ServerデータベースからPrismaを使ってデータクエリ – JavaScriptとTypeScriptのためのより良いORM。

tech

Prismaとは?

Prismaはデータ操作を簡単にします!タイプセーフなNode.js & TypeScript ORM、グローバルデータベースキャッシュ、接続プーリング、リアルタイムデータベースイベントを提供します。

クエリ
// Creating a new record
await prisma.user.create({
firstName: “Alice”,
email: “alice@prisma.io”
})
テーブル
id firstName email
1 Bobby bobby@tables.io
2 Nilufar nilu@email.com
3 Jürgen jums@dums.edu
4 Alice alice@prisma.io

Prismaとhapiの連携

Prismaは次世代ORMであり、hapiアプリでデータベースをクエリするために使用されます。プレーンなSQLクエリの記述、knex.jsのようなクエリビルダーの使用、またはTypeORM、MikroORM、Sequelizeのような従来のORMの代替として使用できます。

Prismaはhapiと非常に相性が良いですが、koa.js、Fastify、FeathersJSなどの他のウェブフレームワークでも使用できます。PrismaはRESTやGraphQL APIを構築するために使用でき、マイクロサービスとモノリシックアーキテクチャの両方とスムーズに統合できます。

PrismaとHapiのユースケース

Prismaはhapiと完璧に統合された便利なデータベースアクセスレイヤーを提供します。

以下のコードは、APIサーバー構築にhapiを使用する際のPrismaの様々な使用例を示しています。

prismaPlugin

prismaPlugin

prismaPluginは、ドメインまたはモデル固有のプラグインの基盤です。それに含まれるPrismaClientインスタンスは、アプリケーションの残りの部分へのデータベースインターフェースを提供します。

1import { PrismaClient } from '@prisma/client'
2import Hapi from '@hapi/hapi'
3
4declare module '@hapi/hapi' {
5 interface ServerApplicationState {
6 prisma: PrismaClient
7 }
8}
9
10const prismaPlugin = {
11 name: 'prisma',
12 register: async function(server) {
13 const prisma = new PrismaClient()
14
15 server.app.prisma = prisma
16
17 server.ext({
18 type: 'onPostStop',
19 method: async (server) => {
20 server.app.prisma.$disconnect()
21 },
22 })
23 },
24}
25
26export default prismaPlugin
usersPlugin
Prismaスキーマ

prismaPlugin

prismaPluginは、ドメインまたはモデル固有のプラグインの基盤です。それに含まれるPrismaClientインスタンスは、アプリケーションの残りの部分へのデータベースインターフェースを提供します。

1import { PrismaClient } from '@prisma/client'
2import Hapi from '@hapi/hapi'
3
4declare module '@hapi/hapi' {
5 interface ServerApplicationState {
6 prisma: PrismaClient
7 }
8}
9
10const prismaPlugin = {
11 name: 'prisma',
12 register: async function(server) {
13 const prisma = new PrismaClient()
14
15 server.app.prisma = prisma
16
17 server.ext({
18 type: 'onPostStop',
19 method: async (server) => {
20 server.app.prisma.$disconnect()
21 },
22 })
23 },
24}
25
26export default prismaPlugin

なぜPrismaとhapiなのか?

スムーズな統合

Prismaは、REST APIまたはGraphQL APIのどちらを構築する場合でも、hapiの柔軟なアーキテクチャに完璧に適合します。

より高い生産性

Prismaは、データベースクエリのオートコンプリート、優れた開発者体験、完全なタイプ安全性を提供します。

タイプセーフなデータベースクライアント

Prisma Clientは、JavaScriptでもオートコンプリートのような利点がある、完全にタイプセーフなデータベースクエリを保証します。

直感的なデータモデリング

Prismaの宣言的なモデリング言語はシンプルで、データベーススキーマを直感的に記述できます。

簡単なデータベースマイグレーション

宣言的なPrismaスキーマから、予測可能でカスタマイズ可能なSQLマイグレーションを生成します。

API構築向けに設計

Prisma Clientは、一般的なAPI機能(例:ページネーション、フィルターなど)のクエリを提供することで、ボイラープレートを削減します。

注目のPrisma & hapiの例

TypeScript、PostgreSQL & Prismaでモダンバックエンドを構築

hapiとPrismaでモダンバックエンドを構築するためのチュートリアルシリーズ

REST APIスターターキット

SQLiteデータベースを使用したREST APIのすぐに実行できるサンプルプロジェクト

GraphQL APIスターターキット

SQLiteデータベースを使用したGraphQL APIのすぐに実行できるサンプルプロジェクト