Today we're releasing Prisma ORM version 6.2.0 π
π Help us spread the word about Prisma by starring the repo or tweeting about the release. π
We have a number of new features in this version, including support for json
and enum
fields in SQLite, a new updateManyAndReturn
function, support for ULID values, as well as the promotion of the omit
feature from Preview to Generally Availability.
Highlights
Excluding fields via omit
is now production-ready
Our number one requested feature is out of Preview and Generally Available. In 6.2.0, you no longer need to add omitApi
to your list of Preview features:
generator client {
provider = "prisma-client-js"
- previewFeatures = ["omitApi"]
}
As a refresher: omit
allows you to exclude certain fields from being returned in the results of your Prisma Client queries.
You can either do this locally, on a per-query level:
const result = await prisma.user.findMany({
omit: {
password: true,
},
});
Or globally, to ensure a field is excluded from all queries of a certain model:
const prisma = new PrismaClient({
omit: {
user: {
password: true
}
}
})
// The password field is excluded in all queries, including this one
const user = await prisma.user.findUnique({ where: { id: 1 } })
For more information on omit
, be sure to check our documentation.
json
and enum
fields in SQLite
Previous to this version, you could not define json
and enum
fields in your Prisma schema when using SQLite. The respective GitHub issues have been among the most popular ones in our repo, so with our new approach to open-source governance, we finally got to work and implemented these.
Working with JSON and Enum fields works similarly to other database providers, hereβs an example:
datasource db {
provider = "sqlite"
url = "file:./dev.db"
}
model User {
id Int @id @default(autoincrement())
name String
role Role
data Json
}
enum Role {
Customer
Admin
}
Support for auto-generated ULID values
Similar to cuid2
support released in ORM version 6.0.0, we are now adding support for Universally Unique Lexicographically Sortable Identifiers (or short: ULIDs π) in version 6.2.0. A ULID value is a 26-character alphanumeric string, e.g. 01GZ0GZ3XARH8ZP44A7TQ2W4ZD
.
With this new feature, you can now create records with auto-generated ULID values for String
fields:
model User {
id String @id @default(ulid())
}
New batch function: updateManyAndReturn
updateMany
allows you to update many records in your database, but it only returns the count of the affected rows, not the resulting rows themselves. With updateManyAndReturn
you are now able to achieve this:
const users = await prisma.user.updateManyAndReturn({
where: {
email: {
contains: 'prisma.io',
}
},
data: {
role: 'ADMIN'
}
})
This call to updateManyAndReturn
will now return the actual records that have been updated in the query:
[{
id: 22,
name: 'Alice',
email: 'alice@prisma.io',
profileViews: 0,
role: 'ADMIN',
coinflips: []
}, {
id: 23,
name: 'Bob',
email: 'bob@prisma.io',
profileViews: 0,
role: 'ADMIN',
coinflips: []
}]
Please note that like createManyAndReturn
, updateManyAndReturn
is only supported in PostgreSQL, CockroachDB, and SQLite.
Fixed runtime error in Node.js v23
While not officially supported, we understand that a lot of you like to be on the latest Node.js version β so we fixed an error that only occurred on Node.js 23. Happy coding βοΈ
Prisma is hiring π€
Join us at Prisma to work on the most popular TypeScript ORM and other exciting products like the first serverless database built on unikernels!
We currently have two open roles in our Engineering team:
If these donβt fit, you can still check out our jobs page and send a general application.