gpt4 book ai didi

postgresql - Prisma2 prisma introspect 为外键返回奇怪的值

转载 作者:行者123 更新时间:2023-12-05 05:03:56 26 4
gpt4 key购买 nike

我有两个表,UserRelationship。这些表用于存储父子关系。我正在使用 Postgres

//架构.sql

CREATE TABLE "public"."Relationships" (
id SERIAL PRIMARY KEY NOT NULL,
parent_id INT NOT NULL,
FOREIGN KEY (parent_id) REFERENCES "User" (id),
child_id INT NOT NULL,
FOREIGN KEY (child_id) REFERENCES "User" (id)
)

CREATE TABLE "public"."User" (
id SERIAL PRIMARY KEY NOT NULL,
name VARCHAR(128) NOT NULL,
email VARCHAR(128) UNIQUE,
password VARCHAR(128) NOT NULL,
isChild BOOLEAN NOT NULL DEFAULT false
created_at TIMESTAMP NOT NULL DEFAULT NOW();
);

当我运行 npx prisma introspect 时,schema.prisma 文件中返回以下内容。

//架构.prisma

generator client {
provider = "prisma-client-js"
}

datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
}

model Relationships {
child_id Int
id Int @default(autoincrement()) @id
parent_id Int
User_Relationships_child_idToUser User @relation("Relationships_child_idToUser", fields: [child_id], references: [id])
User_Relationships_parent_idToUser User @relation("Relationships_parent_idToUser", fields: [parent_id], references: [id])
}

model User {
created_at DateTime @default(now())
email String? @unique
id Int @default(autoincrement()) @id
ischild Boolean @default(false)
name String?
password String
Relationships_Relationships_child_idToUser Relationships[] @relation("Relationships_child_idToUser")
Relationships_Relationships_parent_idToUser Relationships[] @relation("Relationships_parent_idToUser")
}

我不明白什么是 User_Relationships_child_idToUserUser_Relationships_parent_idToUser 以及为什么它们不仅仅是 Prisma 文档教程中针对外键出现的简单语法。

最佳答案

Prisma 的内省(introspection)为每个外键生成两个字段:

  • 关系标量字段(基本上是外键的直接表示)
  • 一个关系字段(用@relation 属性注释)——这些字段似乎让您感到困惑。它们提供的原因是您可以在 Prisma 客户端 API 中轻松处理这些关系。

您可以在文档中找到更多相关信息 here .

当然 User_Relationships_parent_idToUserUser_Relationships_child_idToUser 不是很好听的名字。您可以在内省(introspection)和 rename the relation fields 后手动调整模式有更友好的名字,例如:

model Relationships {
child_id Int
id Int @default(autoincrement()) @id
parent_id Int
child User @relation("Relationships_child_idToUser", fields: [child_id], references: [id])
parent User @relation("Relationships_parent_idToUser", fields: [parent_id], references: [id])
}

关于postgresql - Prisma2 prisma introspect 为外键返回奇怪的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61407977/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com