Prisma ORM 5.16.0の新機能をご紹介します。この機能により、クエリから特定のフィールドをグローバルまたはローカルに省略できます。パスワードなどの機密情報が絶対に公開されないようにする場合でも、単一のクエリのデータ取得を効率化する場合でも、Prisma ORMが対応します。このブログ記事では、コード例とガイダンスを通じて、データ管理を強化する方法を学びます。
Prisma ORM 5.16.0では、Prisma Clientクエリからフィールドを省略するグローバルな方法を導入できることを大変嬉しく思います!この非常に要望の多かった機能は、GitHub issuesでのリアクションや、omitApi
プレビュー機能の最初の実装に対するフィードバックなど、コミュニティから寄せられたフィードバックに直接影響を受けました。この機能の開発にご協力いただいた皆様に心より感謝申し上げます!
このリリースは、開発者がセキュリティとプライバシーに対してパフォーマンスとエクスペリエンスのバランスを取る必要性を高めるのに役立つと信じています。この機能を使用して、クエリ結果における機密データの管理を簡素化する方法について読み進めてください。
Prisma ORM 5.16.0でのフィールドの省略
Prisma ORM 5.13.0で初めてリリースされたomitApi
プレビュー機能により、既存のselect
機能と並行して、またはPrisma Clientの初期化時に、クエリからフィールドをomit
できるようになりました。ユーザーのパスワードのようにフィールドをグローバルに省略するか、すべてのビューで必要ないフィールドのようにクエリごとに省略するフィールドを定義することができます。フロントエンドに必要なデータだけを送信することが、これまでになく簡単になりました。
フィールドをグローバルに省略する方法
Prisma Clientの初期化時に、フィールドを「省略済み」としてマークできます。これは、そのPrisma Clientインスタンスでのどのクエリでも、それらのフィールドが返されないことを意味します。例えば、Prisma Clientを初期化し、常にユーザーのパスワードをomit
することができます。
グローバルに省略されたフィールドを再含めたい場合は、個々のクエリレベルでこれをオーバーライドできます。
フィールドをローカルに省略する方法
Prisma ORM 5.13.0で初めてリリースされた、クエリごとのomitApi
プレビュー機能も利用可能です。この機能により、select
を使用するのと同様に、クエリレベルでフィールドをomit
できます。
これで、フィールドをグローバルに省略し、特定の状況でのみ選択するという柔軟性、あるいはその逆も可能になりました!
フィールドを省略するタイミング
フィールドを省略する方法が2つある今、最も一般的な疑問は「それぞれのアプローチをいつ使用すべきか?」ということです。
セキュリティや機密情報の公開について懸念がある場合は、ほとんどのケースでグローバルな省略(global omit)を使用することをお勧めします。これにより、新しく書かれたクエリが誤って機密データをクエリに含めることがなくなります。これの確実な使用例は、常にユーザーパスワードを省略することでしょう。
しかし、データ最適化に関心がある場合は、ローカルな省略(local omit)を使用することをお勧めします。これにより、ほとんどのクエリでモデルのすべてのフィールドを引き続き使用でき、データ転送量が懸念される場合にモデルを軽量化できます。例えば、各列のデータが比較的軽いテーブルがあり、大量のJSONまたはBlobデータを含む列が1つある場合、その列を簡単に除外することで、アプリがリクエストごとにすべてのデータを転送する必要がなくなります。
皆様からの継続的なフィードバックをお待ちしております!
フィールドをグローバルに省略する機能は、最も要望の多かった機能であり、これを5.16.0リリースに含めることができることを大変嬉しく思います。フィードバックがございましたら、専用のGitHubディスカッションにぜひお寄せください。omitApi
プレビュー機能についてはこれまで素晴らしい議論を重ねており、今後もその議論を続けられることを楽しみにしています。
次の投稿をお見逃しなく!
Prismaニュースレターに登録