prisma2 在 prisma 模式中设置长度和列类型

Posted

技术标签:

【中文标题】prisma2 在 prisma 模式中设置长度和列类型【英文标题】:prisma2 set length and column type in prisma schema 【发布时间】:2020-11-14 15:41:21 【问题描述】:

如何将字符串类型的字符串(varchar)长度设置为 50,并在 prisma 模式中定义一个列为 TEXT,对于用户表,我希望 name 为 varchar(50) 和 bio 为文本列。 我通过 prisma migrate save and up 创建我的表。

model User 

  id        Int      @default(autoincrement()) @id
  email     String   @unique
  password  String
  name      String   ***** varchar 50****
  bio       String  *****TEXT ??


【问题讨论】:

【参考方案1】:

最近在v2.17.0 中添加了以下功能。您可以使用@db. 在标量字段的属性中指定数据库类型,后跟 Prisma 指定的所需本机数据库类型属性。对于varchar,请对 PostgreSQL 使用以下内容。

model User 
  id        Int      @default(autoincrement()) @id
  email     String   @unique
  password  String
  name      String   @db.VarChar(50)

更多数据库类型请参考Prisma Schema API docs。

【讨论】:

【参考方案2】:

@Griffin 是正确的。此外,您的 bio 字段可以保持原样。 Prisma 默认将 String 类型设置为本机数据库 text 类型(仅限 PostgreSQL 和 SQLite)。无论数据库如何,您也可以显式设置它:

model User 
  id        Int      @default(autoincrement()) @id
  email     String   @unique
  password  String
  name      String   @db.VarChar(50)
  bio       String   @db.Text

【讨论】:

以上是关于prisma2 在 prisma 模式中设置长度和列类型的主要内容,如果未能解决你的问题,请参考以下文章

prisma2:如何获取嵌套字段?

如何使用 prisma 2 或 3 和 nexus 模式生成同时生成生成的 crud 和“ondelete 级联”

prisma2 migrate 错误:数据库中的迁移比本地多

prisma2:如何通过 prisma.user.findMany() 中的非必填字段进行过滤?

使用 Prisma 2 和 NestJS 进行日志记录 - 依赖注入问题?

用于解析器 GraphQL 瑜伽的 TypeScript 类型(在上下文中使用 prisma2)