Today, we are excited to share the 2.27.0
stable release 🎉
🌟 Help us spread the word about Prisma by starring the repo ☝️ or tweeting about the release. 🌟
Major improvements & new features
MongoDB is Now in Preview 🎉
We're thrilled to announce that Prisma now has Preview support for MongoDB. Here's how to get started:
Inside your schema.prisma
file, you'll need to set the database provider to mongodb
. You'll also need to add mongoDb
to the previewFeatures
property in the generator
block:
// Set the database provider to "mongodb"
datasource db {
provider = "mongodb"
url = env("DATABASE_URL")
}
// We want to generate a Prisma Client
// Since mongodb is a preview feature, we need to enable it.
generator client {
provider = "prisma-client-js"
previewFeatures = ["mongoDb"]
}
// Create our Post model which will be mapped to a collection in the database.
// All posts have a required `title`, `slug` and `body` fields.
// The id attributes tell Prisma it's a primary key and to generate
// object ids by default when inserting posts.
model Post {
id String @id @default(dbgenerated()) @map("_id") @db.ObjectId
slug String @unique
title String
body String
}
Next, you'll need to add a database connection string to your .env
file. We recommend using MongoDB Atlas to spin up a MongoDB database for free. Set the DATABASE_URL
to the connection string you got from MongoDB Atlas, it should be similar to the following string:
DATABASE_URL="mongodb+srv://admin:<password>@cluster0.quvqo.mongodb.net/myFirstDatabase?retryWrites=true&w=majority"
❗️ Don't forget to include the username and password you set while creating the database in the connection string, otherwise you won't be able to connect to it.
Then you can run npx prisma generate
to generate a MongoDB-compatible Prisma Client. The Prisma Client API is the same for Mongo as it is for other supported relational databases (PostgreSQL, MySQL, SQLite and Microsoft SQL Server).
To test that everything works, you can run the following script:
import { PrismaClient } from "@prisma/client"
const prisma = new PrismaClient()
async function main() {
// Create the first post
await prisma.post.create({
data: {
title: "Prisma <3 MongoDB",
slug: "prisma-loves-mongodb",
body: "This is my first post. Isn't MongoDB + Prisma awesome?!",
},
})
// Log our posts showing nested structures
console.dir(posts, { depth: Infinity })
}
main()
.catch(console.error)
.finally(() => prisma.$disconnect())
You should see a new post created and added to your database! You can use Prisma Studio to view the record you just added by running npx prisma studio
.
This is just the tip of the iceberg. Learn more in our Getting Started Guide.
We would love to know your feedback! If you have any comments or run into any problems we're available in this issue. You can also browse existing issues that have the MongoDB label.
Prisma native support for M1 Macs 🚀
This one's for our Mac users. Prisma now runs natively on the new M1 chips. Best of all, there's nothing to configure, it just works. Enjoy the speed bump!
Fixes and improvements
Prisma Client
- Provide precompiled binaries for Mac's M1 ARM architecture
- Prisma Format: Fill in native type attributes on foreign key relations
- Entity types cannot be resolved in PNPM monorepo
- 2.26.0 and
pnpm
do not play well together - LRT: Break down the design into discrete tasks
Prisma Migrate
- Handle error
ERROR 70100 (1317): foreign key constraints are not allowed, see https://code.openark.org/blog/mysql/the-problem-with-mysql-foreign-key-constraints-in-online-schema-changes
- Handle error
ERROR HY000 (1105): direct DDL is disabled
- db push --force-reset is not creating database if it doesn't exist
- Migrate tries to drop + recreate column when changing type from TEXT -> CITEXT (Postgres)
- SQL Server Introspection lists XML indices which are then rejected by schema validation
migrate dev
and PostGis Views- DB pull & migration doesn't work for MongoDB
prisma init
for datasource providers in Preview/EarlyAccess- referentialActions: Only underline offending part of line when using referential actions, but not having preview feature enabled
- Better error when introspecting MongoDB
📺 Join us for another "What's new in Prisma" livestream
Learn about the latest release and other news from the Prisma community by joining us for another "What's new in Prisma" livestream.
The stream takes place on Youtube on Thursday, July 15 at 5pm Berlin | 8am San Francisco.