Можно ли получить доступ к метаданным о призматической модели?

Допустим, у меня в 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, а также искал в Google что-то вроде «получить метаинформацию о модели в prisma2», но я не нашел никакого решения. Есть ли способ добиться этого?


person daniel grieb    schedule 12.12.2020    source источник


Ответы (1)


Да, вы можете получить все метаданные для всей схемы следующим образом:

const prisma = new PrismaClient()

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

Это даст вам все детали для моделей и отношений. Причина, по которой это не задокументировано, заключается в том, что это в высшей степени экспериментально и будет меняться с выпусками, поэтому оно используется только для внутренних целей.

person Ryan    schedule 14.12.2020