作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在 Prisma 中尝试播种,我正在努力寻找不是 super 基础的示例。在下面的示例中,我想创建一个 User
(作者),他编写了多个 Services
(1:n) 并且每个 Service
都可以来自一个 Provider
。
用户
- 1:n - 服务
服务
m:1 - 提供者
在下面的示例中,创建过程会在 Provider
表上生成 3 个“AWS”实例。考虑到所使用的语法,这是有道理的。我只想分别拥有 AWS、GCP 和 AZURE(我的提供商枚举)的一个记录。
此外,如果有人有更 Eloquent 例子来说明如何生成它以提高种子的可扩展性,请告诉我。
const main = async () => {
await prisma.user.create({
data: {
email: "moderator@gmail.com",
username: "timothy",
role: "MODERATOR",
authored: {
create: [
{
name: "Simple Storage Service",
acronym: "S3",
provider: {
create: {
name: "AWS", // how can these all reference the same Provider table row?
},
},
},
{
name: "DynamoDB",
acronym: "DynamoDB",
provider: {
create: {
name: "AWS",
},
},
},
{
name: "API Gateway",
acronym: "API Gateway",
provider: {
create: {
name: "AWS",
},
},
},
{
name: "BigQuery",
acronym: "BigQuery",
provider: {
create: {
name: "GCP",
},
},
},
],
},
},
});
};
enum Providers {
AWS
GCP
AZURE
}
enum Role {
USER
MODERATOR
ADMIN
}
model User {
id Int @id @default(autoincrement())
email String @unique @db.VarChar(255)
username String @unique @db.VarChar(255)
role Role @default(USER)
createdAt DateTime @default(now())
authored Service[]
}
model Service {
id Int @id @default(autoincrement())
name String @unique @db.VarChar(255)
acronym String @unique @db.VarChar(255)
authorId Int
providerId Int
author User @relation(fields: [authorId], references: [id])
provider Provider @relation(fields: [providerId], references: [id])
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}
model Provider {
id Int @id @default(autoincrement())
name Providers
Services Service[]
createdAt DateTime @default(now())
}
Provider
表中的当前结果。 “AWS”不应出现重复(一式三份)。
最佳答案
只需预先创建提供者,然后将其连接
到服务:
const main = async () => {
const awsProvider = await prisma.providers.create({
data: { name: 'AWS' }
})
await prisma.user.create({
data: {
email: "moderator@gmail.com",
username: "timothy",
role: "MODERATOR",
authored: {
create: [
{
name: "Simple Storage Service",
acronym: "S3",
provider: {
connect: awsProvider
},
},
// ...
关于postgresql - 如何在 Prisma 中播种关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71162710/
我是一名优秀的程序员,十分优秀!