繁体   English   中英

Prisma 中的 Create 语句中的 CreateMany

[英]CreateMany inside a Create statement in Prisma

您好,我正在尝试实现一个接受另一个 model 数组的创建语句。这是我的模式

model House {
  id        String   @id
  createdAt DateTime @default(now())
  updatedAt DateTime @updatedAt

  property_name String     @db.VarChar(30)
  house_type    String     @db.VarChar(10)
  beds          Int
  baths         Int
  workspace     Int
  occupied      Boolean    @default(false)
  stay          DateTime[]

  amenities Amenity[]
  room      Room[]

  zipcode    String  @db.VarChar(5)
  address    Address @relation(fields: [address_id], references: [id])
  address_id Int
}

model Address {
  id Int @id @default(autoincrement())

  city       String
  state_code String  @db.VarChar(2)
  house      House[]
}

model Amenity {
  id Int @id @default(autoincrement())

  amenity_name String
  house        House  @relation(fields: [house_id], references: [id])
  house_id     String
}

model Room {
  id Int @id @default(autoincrement())

  room_number String
  occupied    Boolean @default(false)
  house       House   @relation(fields: [house_id], references: [id])
  house_id    String
}

我试图添加具有各自关系的房屋,但这是我发现的唯一方法。

createHomeDto.id = uuid();
    const {
      amenities,
      room,
      ...home
    } = createHomeDto;

    await this.prisma.house.create({
      data: home
    });

    Object.entries(amenities).map(async ([key, value]) => {
      await this.prisma.amenity.create({
        data: {
          amenity_name: value.amenity_name,
          house: {
            connect: {
              id: home.id
            }
          }
        }
      })
    });

    Object.entries(room).map(async ([key, value]) => {
      await this.prisma.room.create({
        data: {
          room_number: value.room_number,
          house: {
            connect: {
              id: home.id
            }
          }
        }
      })
    })

是否有更好的解决方案,或者我坚持这样建立我的关系?

它能回答你的问题吗?

https://www.prisma.io/docs/concepts/components/prisma-client/relation-queries#nested-writes

编辑:如果向下滚动此页面,您将看到如何在 create 语句中创建 createMany。 看给定的例子:

const user = await prisma.user.create({
  data: {
    email: 'saanvi@prisma.io',
    posts: {
      createMany: {
        data: [{ title: 'My first post' }, { title: 'My second post' }],
      },
    },
  },
  include: {
    posts: true,
  },
})

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM