Prismaは、型安全性のあるデータベースアクセスを提供する、現代的なデータベースツールキットです。本記事では、Prismaを使用してOceanBaseデータベースのMySQLモードに接続する方法について説明します。
前提条件
- Node.js 14.0.0以降のバージョンがインストール済みであること。
- npmまたはyarnパッケージマネージャーがインストールされていること。
- OceanBaseデータベースがデプロイ済みで、MySQLテナントが作成されていること。
手順
- Node.jsとnpmのバージョンを確認する
- 必要な依存関係をインストールする
- OceanBaseデータベースの接続情報を取得する
- プロジェクトを作成して設定する
- サンプルプログラムを実行する
ステップ1:Node.jsとnpmのバージョンを確認する
ターミナルを開き、以下のコマンドを実行してNode.jsとnpmのバージョンを確認します:
node -v
npm -v
ステップ2:必要な依存関係をインストールする
プロジェクトディレクトリを作成し、初期化します:
mkdir prisma-oceanbase-demo cd prisma-oceanbase-demo npm init -y npm install prisma @prisma/clientPrismaを初期化します:
npx prisma init --datasource-provider mysql初期化が完了すると、次のような出力が表示されます:
✔ Your Prisma schema was created at prisma/schema.prisma You can now open it in your favorite editor. Next steps: 1. Set the DATABASE_URL in the .env file to point to your existing database. 2. Run prisma db pull to turn your database schema into a Prisma schema. 3. Run prisma generate to generate the Prisma Client. 4. Start querying your database with Prisma Client. More information in our documentation: https://pris.ly/d/getting-started環境変数を設定します:
初期化後、Prismaは自動的に
.envファイルとprisma/schema.prismaファイルを作成します。.envファイルを編集し、OceanBaseデータベースの接続情報を設定します:# .env DATABASE_URL="mysql://username:password@host:port/database?schema=public"注意
username、password、host、port、databaseをご自身のOceanBaseデータベース接続情報に置き換えてください。schemaパラメータがデータベーススキーマ名と一致していることを確認してください。- SSL接続を使用する場合は、
?sslmode=requireパラメータを追加する必要があります。
データベーススキーマを取得します(既存のテーブルがある場合):
npx prisma db pullこのコマンドは、既存のデータベースからテーブル構造を取得し、
prisma/schema.prismaファイルを更新します。Prismaクライアントを生成します:
npx prisma generateこのコマンドは
prisma/schema.prismaファイルを読み込み、対応するTypeScript型定義とPrismaクライアントコードを生成します。データベースマイグレーションを作成します(新規プロジェクトのみ適用):
npx prisma migrate dev --name init新規プロジェクトの場合、このコマンドを使用して以下を行います:
- マイグレーションファイルを作成する
- データベースにマイグレーションを適用する
- Prismaクライアントを再生成する
注意
既に
db pullを使用して既存のデータベースからテーブル構造を取得している場合は、この手順を実行する必要はありません。
ステップ3:データ操作の例
このセクションでは、Prismaを使用して基本的なデータ操作を行う方法を示します。これには、usersテーブルのデータの挿入とクエリが含まれます。
1. Prismaクライアントの初期化
まず、プロジェクトのルートディレクトリにindex.jsファイルを作成し、以下のコードを追加します:
const { PrismaClient } = require('@prisma/client')
const prisma = new PrismaClient()
async function main() {
// 1. Create a new user
const newUser = await prisma.users.create({
data: {
username: 'ambermoe',
email: 'amber@example.com',
password_hash: 'hashed_password_here', // Use bcrypt for password hashing in production
},
})
console.log('User created successfully:', newUser)
// 2. Query user
const user = await prisma.users.findUnique({
where: {
email: 'amber@example.com',
},
})
console.log('Retrieved user:', user)
}
main()
.catch((e) => {
console.error('Error:', e)
process.exit(1)
})
.finally(async () => {
await prisma.$disconnect()
})
2. サンプルコードの実行
以下の手順を完了していることを確認してください:
prisma/schema.prismaにusersテーブルモデルが正しく定義されていること。新規プロジェクトの場合は、データベースマイグレーションを適用します。
npx prisma migrate dev --name init既存のデータベースからテーブル構造を取得した場合は、この手順をスキップできます。
Prisma Clientの生成:
npx prisma generateサンプルコードの実行:
node index.js
実行後、コンソールに新規作成されたユーザー情報とクエリされたユーザー情報が表示されます。
User created successfully: {
id: 2,
username: 'ambermoe',
email: 'amber@example.com',
password_hash: 'hashed_password_here',
created_at: 2025-06-04T03:40:43.000Z,
updated_at: 2025-06-04T03:40:43.000Z
}
Retrieved user: {
id: 2,
username: 'ambermoe',
email: 'amber@example.com',
password_hash: 'hashed_password_here',
created_at: 2025-06-04T03:40:43.000Z,
updated_at: 2025-06-04T03:40:43.000Z
}
説明
実際のプロジェクトでは、以下の点を確認してください:
- パスワードは必ず暗号化処理を施す必要があります(例:bcryptを使用する)。
- 発生する可能性のあるエラー状況を処理する。
- 環境変数を使用してデータベース接続情報を管理する。
- 適切な入力検証を追加する。