首页 > 解决方案 > 是否可以访问有关 prisma 模型的元数据?

问题描述

假设我的schema.prisma文件中有一个模型:

model Post {
  id        Int   @id @default(autoincrement())
  author    User  @relation(fields: [authorId], references: [id])
  authorId  Int
}

model在我的服务器中调用一个包含模型名称的变量

const model: string = [model name generated dynamically]

使用这个字符串我想知道关于这个模型的所有信息。例如,如果这个变量model恰好是Post,我想知道它有字段id, author, authorId以及每个字段的信息,例如author它引用哪个模型中的哪个字段,在本例中为模型User字段id

我知道 prisma会type为每个生成一个model,这样也许我可以通过这种方式访问​​这些字段,但这对我来说还不够,我还想要有关每个字段的信息。

我搜索了 prisma 文档,还搜索了诸如“获取有关 prisma2 中模型的元信息”之类的内容,但我没有找到任何解决方案。有没有办法做到这一点?

标签: prismaprisma2

解决方案


是的,您可以通过以下方式获取整个架构的所有元数据:

const prisma = new PrismaClient()

// @ts-ignore
console.log(prisma._dmmf)

这将为您提供模型和关系的所有详细信息。没有记录的原因是这是高度实验性的,并且会随着版本的变化而变化,这就是它仅用于内部目的的原因。


推荐阅读