メインコンテンツへスキップ

フィールドと型

このセクションでは、Prisma Clientで使用できるさまざまな特殊なフィールドと型について説明します。

Decimalの操作

DecimalフィールドはDecimal.jsライブラリによって表現されます。以下の例は、Prisma.Decimalをインポートして使用する方法を示しています

import { PrismaClient, Prisma } from '@prisma/client'

const newTypes = await prisma.sample.create({
data: {
cost: new Prisma.Decimal(24.454545),
},
})

算術演算も実行できます

import { PrismaClient, Prisma } from '@prisma/client'

const newTypes = await prisma.sample.create({
data: {
cost: new Prisma.Decimal(24.454545).plus(1),
},
})

Prisma.DecimalはDecimal.jsを使用しています。詳細については、Decimal.jsのドキュメントを参照してください。

警告

Decimalフィールドの使用は、現在MongoDBではサポートされていません

BigIntの操作

概要

BigIntフィールドはBigIntによって表現されます (Node.js 10.4.0+ が必要です)。以下の例は、BigInt型の使用方法を示しています

import { PrismaClient, Prisma } from '@prisma/client'

const newTypes = await prisma.sample.create({
data: {
revenue: BigInt(534543543534),
},
})

BigIntのシリアライズ

Prisma ClientはレコードをプレーンなJavaScriptオブジェクトとして返します。BigIntフィールドを含むオブジェクトに対してJSON.stringifyを使用しようとすると、以下のエラーが表示されます

Do not know how to serialize a BigInt

この問題を回避するには、JSON.stringifyのカスタマイズされた実装を使用してください

JSON.stringify(
this,
(key, value) => (typeof value === 'bigint' ? value.toString() : value) // return everything else unchanged
)

Bytesの操作

BytesフィールドはUint8Array型によって表現されます。以下の例は、Uint8Array型の使用方法を示しています

import { PrismaClient, Prisma } from '@prisma/client'

const newTypes = await prisma.sample.create({
data: {
myField: new Uint8Array([1, 2, 3, 4]),
},
})

**Prisma v6より前**は、BytesBuffer型によって表現されていたことに注意してください

import { PrismaClient, Prisma } from '@prisma/client'

const newTypes = await prisma.sample.create({
data: {
myField: Buffer.from([1, 2, 3, 4]),
},
})

v6へのアップグレードガイドで詳細をご覧ください。

DateTimeの操作

現在、DateTime値を文字列として渡すことを許可せず、そうするとランタイムエラーが発生するバグがあります。DateTime値はDateオブジェクトとして渡す必要があります(例:'2024-12-04'ではなくnew Date('2024-12-04'))。

DateTime型のフィールドを持つレコードを作成する際、Prisma ClientはISO 8601標準に準拠したDateオブジェクトとして値を受け入れます。

以下のスキーマを考慮してください

model User {
id Int @id @default(autoincrement())
birthDate DateTime?
}

新しいレコードを作成する例をいくつか示します

1998年1月1日; 00時00分000ミリ秒
await prisma.user.create({
data: {
birthDate: new Date('1998')
}
})
1998年12月1日; 00時00分000ミリ秒
await prisma.user.create({
data: {
birthDate: new Date('1998-12')
}
})
1998年12月24日; 00時00分000ミリ秒
await prisma.user.create({
data: {
birthDate: new Date('1998-12-24')
}
})
1998年12月24日; 06時22分33秒444ミリ秒
await prisma.user.create({
data: {
birthDate: new Date('1998-12-24T06:22:33.444Z')
}
})

Jsonの操作

参照: Jsonフィールドの操作

スカラリスト / スカラ配列の操作

参照: スカラリスト / 配列の操作

複合IDと複合ユニーク制約の操作

参照: 複合IDと複合ユニーク制約の操作

© 2025 prisma.dokyumento.jp. All rights reserved.