与附加字段的一对多关系
One-to-many relation with additional field
我正在使用模型用户和公会在 prisma 中创建模式。
- 用户可以拥有一个公会或none
- 公会可以有多个用户
现在我想添加一个用户在公会中的角色的附加字段。
实现此目标的最佳方法是什么?
我可以将它们添加到用户,但我必须在代码中管理它,所有这些都为 null 或不为 null。
enum GuildRole {
MEMBER
CO_LEADER
LEADER
}
model Guild {
id Int @id @default(autoincrement())
name String
users User[]
}
model User {
id Int @id @default(autoincrement())
username String? @unique
guild Guild? @relation(fields: [guildId], references: [id])
guildId Int?
guildRole GuildRole?
}
将现有用户添加到公会时,您可以按照以下方式进行操作。
import { PrismaClient, GuildRole } from '@prisma/client'
const prisma = new PrismaClient()
// add user to guild
const addAnExistingUserToAGuild = async (userId: number, guildId: number, guildRole: GuildRole) => {
return await prisma.user?.create({
data: {
guildId: guildId,
userId: userId,
guildRole: guildRole,
},
})
}
建模将完全取决于您的 personal/company preference/style,我已经为您的模式建模了:
enum GuildRole {
MEMBER
CO_LEADER
LEADER
}
model User {
userId Int @id @default(autoincrement())
username String? @unique
guild Guild? @relation(fields: [guildId], references: [guildId])
guildId Int?
guildRole GuildRole?
}
model Guild {
guildId Int @id @default(autoincrement())
name String
users User[]
}
我们的文档中有更多关于如何创建一对多关系的示例:
https://www.prisma.io/docs/concepts/components/prisma-schema/relations/one-to-many-relations
我正在使用模型用户和公会在 prisma 中创建模式。
- 用户可以拥有一个公会或none
- 公会可以有多个用户
现在我想添加一个用户在公会中的角色的附加字段。
实现此目标的最佳方法是什么?
我可以将它们添加到用户,但我必须在代码中管理它,所有这些都为 null 或不为 null。
enum GuildRole {
MEMBER
CO_LEADER
LEADER
}
model Guild {
id Int @id @default(autoincrement())
name String
users User[]
}
model User {
id Int @id @default(autoincrement())
username String? @unique
guild Guild? @relation(fields: [guildId], references: [id])
guildId Int?
guildRole GuildRole?
}
将现有用户添加到公会时,您可以按照以下方式进行操作。
import { PrismaClient, GuildRole } from '@prisma/client'
const prisma = new PrismaClient()
// add user to guild
const addAnExistingUserToAGuild = async (userId: number, guildId: number, guildRole: GuildRole) => {
return await prisma.user?.create({
data: {
guildId: guildId,
userId: userId,
guildRole: guildRole,
},
})
}
建模将完全取决于您的 personal/company preference/style,我已经为您的模式建模了:
enum GuildRole {
MEMBER
CO_LEADER
LEADER
}
model User {
userId Int @id @default(autoincrement())
username String? @unique
guild Guild? @relation(fields: [guildId], references: [guildId])
guildId Int?
guildRole GuildRole?
}
model Guild {
guildId Int @id @default(autoincrement())
name String
users User[]
}
我们的文档中有更多关于如何创建一对多关系的示例:
https://www.prisma.io/docs/concepts/components/prisma-schema/relations/one-to-many-relations