Reputation: 4916
I am trying to find examples of how to create a "child" object in prisma client.
Let's say this is my schema (fake example):
model User {
id: string,
posts: Post[]
}
model Post {
userId: int,
user: User
}
So in this example I am refering to a "child" as a Post of a User.
Now, let's say that I already "have" the user object. How then do I create a Post for this user?
let user = await prismaClient.user.upsert({
where: {id: "someId"},
update: {},
create: {id: "someId"}
}
user.createPost (???) // <--- What do I write here?
Upvotes: 1
Views: 2938
Reputation: 7568
Consider this prisma schema.
datasource db {
url = env("DATABASE_URL")
provider = "postgresql"
}
generator client {
provider = "prisma-client-js"
}
model User {
id Int @id @default(autoincrement())
createdAt DateTime @default(now())
email String @unique
name String?
role Role @default(USER)
posts Post[]
}
model Post {
id Int @id @default(autoincrement())
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
published Boolean @default(false)
title String @db.VarChar(255)
author User? @relation(fields: [authorId], references: [id])
authorId Int?
}
This is how you could create posts, while linking it to user created through upsert.
let user = await prismaClient.user.upsert({
where: {id: "someId"},
update: {},
create: {id: "someId"}
}
await prisma.postA.create({
data:{
title: 'Post for prisma',
authorId: user.id
}
})
}
You can learn about nested writes from this reference.
Upvotes: 1